До недавнего времени я просто менял координату x моего спрайта при каждом обновлении, и я был доволен этим. Но вчера, находясь в режиме отладки, я обнаружил, что после определенной скорости физическое тело не будет правильно выравниваться со спрайтом, например: Позже мне сказали (от Birkemose на форуме cocos2d), что предпочтительным способом перемещения физического тела из A в B является приложение к нему импульса. Но я понятия не имею, как добиться постоянной скорости таким образом. Это код, который я использовал для перемещения без применения какого-либо импульса:
-(void)update:(CCTime)delta{
rollingHero.position=ccp(rollingHero.position.x+scrollSpeed*delta,
rollingHero.position.y);
physicsNode.position=ccp(physicsNode.position.x-scrollSpeed*delta,
physicsNode.position.y);
}
Поэтому, чтобы создать ощущение движения, я прокручиваю узел физики и героя в противоположных направлениях с одинаковой скоростью прокрутки. Я пробовал много разных вариантов подачи импульса, но так и не смог заставить его двигаться с постоянной скоростью. Скорость увеличивается, и герой оказывается за кадром. Буду очень признателен, если кто-нибудь опубликует пример кода.