스프라이트가 갑자기 움직이는 경우가 있습니다.스프라이트를 움직이면 흔들리는 동작이 발생합니다.
기본적으로 사용자가 화면의 한 지점을 터치하면 스프라이트가 해당 지점으로 이동해야합니다. 이것은 대개 잘 작동합니다 ... 심지어 델타를 고려하고 있습니다 - 프레임 속도가 일정하지 않을 수 있기 때문입니다.
그러나 x 이동 이전에 y 이동이 일반적으로 끝나기 때문에 (이동 거리가 같을지라도) 스프라이트가 부드러운 대각선이 아닌 '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 + = (targety - y) * vx/(targetx - x) * dt? –
예, (targetx - x) = 0 인 경우 0으로 나누는 것에주의하십시오. – Jim