2014-12-24 4 views
0

У меня есть пользовательский класс LineBall, как показано ниже:рисования Trail Линии для SKSpriteNode

@implementation LineBall 

-(instancetype) init { 

    self = [super initWithImageNamed:LINE_BALL_IMAGE]; 

    self.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:self.size.width/2]; 
    self.physicsBody.categoryBitMask = BBPhysicsCategoryLineBall; 

    self.name = @"lineBall"; 

    self.physicsBody.friction = 0.0f; 
    self.physicsBody.restitution = 1.0f; 
    self.physicsBody.linearDamping = 0.0f; 
    self.physicsBody.allowsRotation = NO; 
    self.physicsBody.dynamic = YES; 

    return self; 
} 

Позже я добавить это к GameScene, и она работает, как ожидалось. Проблема в том, что теперь я хочу рисовать линии везде, где путешествует LineBall. Как я могу это сделать?

+0

Рассматривали ли вы прикрепление излучателя частиц к вашему шару? – sangony

+0

Да, но я действительно не хочу излучателя частиц. Я действительно хочу нарисовать линию, с которой могут столкнуться другие тела. –

+0

Вы имеете в виду нечто вроде светового цикла Трона? – sangony

ответ

0

Вот один из способов привлечь след за движущимся мячом.

В методе didSimulatePhysics:

  1. магазин позиции шара в течение долгого времени в изменяемом массиве. Вставить в индексе = 0.
  2. Удалить самый старый (последний) элемент массива, если число элементов превышает максимального размеру TRAIL
  3. Создать изменяемый CGPath обернув над элементами массива с помощью CGPathAddLineToPoint для подключения каждой точки
  4. Удалите старый след от сцены, если она существует
  5. Создать след шара путем создания SKShapeNode с пути с помощью shapeNodeWithPath
  6. Добавьте SKShapeNode на сцену
+1

Будьте осторожны с этим подходом. SKShapeNodes - это hug-ресурсы _huge_. Более элегантным подходом было бы взглянуть на SKEmitterNode. –

+0

@ThomasJohannesmeyer вы можете быть правы, но это противоречит интуиции, учитывая сложность узла формы по сравнению с узлом-эмиттером. – 0x141E

+0

Но немного дополнительной работы стоит того, потому что SKShapeNode имеет огромное влияние на производительность. Особенно, если вы используете их с настраиваемыми путями. http://sartak.org/2014/03/skshapenode-you-are-dead-to-me.html http://stackoverflow.com/questions/24553245/poor-performance-with-skshapenode-in -sprite-kit (Я не проголосовал за этот ответ, кстати.) –

Смежные вопросы