Я бы хотел смоделировать "гравитацию" для одного спрайта.
Я определил CGPoint, который содержит значения гравитации. И у меня есть тик метод.
//in my init I defined this: gravity = ccp(0.0f, -1.0f);
-(void)tick:(ccTime) dt {
if (enableGravity_) {
//simulate gravity
velocity_.x += gravity_.x;
velocity_.y += gravity_.y;
self.position = CGPointMake(position_.x + velocity_.x, position_.y + velocity_.y);
}
if (isAcceleratingEnabled_) { //I move my sprite here
float angle = self.rotation;
float vx = cos(angle * M_PI / 180) * acceleratingSpeed_;
float vy = sin(angle * M_PI / 180) * -acceleratingSpeed_;
CGPoint direction = ccp(vx, vy);
[self setPosition:ccpAdd(self.position, direction)];
}
}
EDIT :
проблема сейчас в том, что я перемещаю свой спрайт, если "isAccelerationEnabled" - ДА. И это не так гладко, когда я так двигаю спрайт.
Если я переместлю свой спрайт вверх и отключу «isAcceleration», он больше не будет двигаться вверх, но сила тяжести мгновенно потянет мой спрайт вниз. Я не знаю, как использовать скорость с этим кодом:
[self setPosition:ccpAdd(self.position, direction)];
Теперь это не совсем гладкое решение для симуляции гравитации.
Это мгновенно применяет силу тяжести к спрайту.
Но я хочу, чтобы спрайт плавно падал. Как реальные объекты упали на землю.
Кстати: я также прикладываю некоторые повышающие силы к спрайту.