Создание растягивающейся «веревки»

Я пытаюсь сделать игру со SpriteKit, в которой главный герой стреляет по «веревке» и качается по уровню (подумайте, что это человек-паук). У меня нет проблем с тем, чтобы сделать веревку и прикрепить ее к игроку и различным спрайтам, но я действительно не знаю, как подойти к части «стрельбы».

Моя текущая веревка построена примерно так (https://www.youtube.com/watch?v=7jWdcbmnmKQ&hd=1), где у меня есть несколько отдельных частей, соединенных с помощью SKPhysicsJointPin. Я попробовал несколько разных подходов к стрельбе по веревке, как с applyImpulse/Force, так и с SKActions, но ни один из них не работает гладко.

Подводя итог:
– Как лучше всего создать веревку, которая может тянуться в определенном направлении?

Я согласен только с общими указателями в правильном направлении, так как это все для изучения, и я не думаю, что мне действительно нужен законченный код для этого.


person awnton    schedule 26.08.2014    source источник
comment
Вы заставили это работать? У меня есть идея, если нет.   -  person 0x141E    schedule 29.08.2014


Ответы (2)


Общий указатель:

  • Стреляйте в физическое тело так, как вам нужно, чтобы оно «летало» (пуля).
  • В didSimulatePhysics назначьте положение пули первому узлу веревки.

Теоретически это должно удлинять веревку во время стрельбы, не влияя на траекторию пули.

Возможно, вам придется добавить больше сегментов веревки по мере увеличения расстояния между пулей и оружием/игроком, иначе веревка может быть слишком плотно сжата в начале траектории полета пули, что приведет к неожиданному поведению физики. Хотя добавление сегментов веревки в полете само по себе может вызвать проблемы.

Одним из решений может быть отключение физики веревки до тех пор, пока не будет достигнуто определенное расстояние или пока пуля не «попадет» во что-нибудь. До этого веревку можно было рассматривать как прямую линию, а узлы сегмента веревки располагались соответственно вдоль прямой линии между пулей и оружием.

person LearnCocos2D    schedule 26.08.2014
comment
Обязательно попробую это. Спасибо! - person awnton; 26.08.2014

Вместо использования физического движка для перемещения вытягивающейся веревки (applyImpulse) попробуйте перемещать конец веревки по прямой линии с фиксированной скоростью, пока он не достигнет цели. Просто мысль!

person Javier S.    schedule 26.08.2014