2
我的精靈有一些生澀的運動。移動一個精靈導致生澀運動
基本上,當用戶觸摸屏幕上的一個點時,精靈應該移動到該點。這大部分工作都很好......它甚至考慮到了增量 - 因爲幀速率可能不一致。然而,我注意到y運動通常在x運動之前完成(即使運動距離相同),所以看起來像精靈正在以「L」形而非平滑對角線移動。
垂直和水平速度(vx,vy)都設置爲300.任何想法有什麼問題?我該如何去讓我的精靈在平滑的對角線上移動?
- (void)update:(ccTime)dt
{
int x = self.position.x;
int y = self.position.y;
//if ball is to the left of target point
if (x<targetx)
{
//if movement of the ball won't take it to it's target position
if (x+(vx *dt) < targetx)
{
x += vx * dt;
}
else {
x = targetx;
}
} else if (x>targetx) //same with x being too far to the right
{
if (x-(vx *dt) > targetx)
{
x -= vx * dt;
}
else {
x = targetx;
}
}
if (y<targety)
{
if (y+(vy*dt)<targety)
{
y += vy * dt;
}
else {
y = targety;
}
} else if (y>targety)
{
if (y-(vy*dt)>targety)
{
y -= vy * dt;
}
else {
y = targety;
}
}
self.position = ccp(x,y);
}
我想我得到這個,所以x + = vx * dt;和y + =(目標 - y)* vx /(目標x - x)* dt? – 2010-03-28 04:35:01
是的,但如果(targetx - x)= 0,請注意除以零。 – Jim 2010-03-28 15:25:30