Есть много способов сделать это, но одним простым способом было бы сохранить угол траектории змеи (я назвал это theta
) и перемещать ее на фиксированную величину в каждом вызове на Update
.
Предполагая, что класс змеи наследует от CCNode
:
-(void)Update:(ccTime)dt {
self.position = ccp(self.position.x + cos(theta)*dt,
self.position.y + sin(theta)*dt);
}
Вы можете затем обновить theta
из вашей логики обработки событий, увеличив ее или уменьшив, когда пользователь нажимает наповерните налево или направо.