예를 들어
현재 오브젝트의 좌표가 (0,0)임.
마우스로 클릭을 하면 목표 좌표 (x,y)를 얻음.
이제 일정한 속도로 목표 좌표까지 움직이려면 어떻게 할까잉?
단, 마우스로 다시 클릭하면, 새로운 목표 좌표(x',y')을 얻게 되고, 현재 좌표는 움직인 좌표로 다시 초기화됨,
새로운 목표 좌표까지의 속도 역시 이전과 일치해야함...
start_x = 0.0;
start_y = 0.0;
dest_x = x;
dest_y = y;
//
전 여기를
move_x = ( dest_x - start_x ) / speed;
move_y = ( dest_y - start_y) / speed;
//
새로운 좌표 클릭
//
start_x = start_x + 움직인 거리
start_y = start_y + 움직인 거리
dest_x = x';
dest_y = y';
저런 식으로 했는데.. 저런식으로 하면 방향은 제대로 잡히는데
새로운 좌표를 클릭할 때마다 오브젝트가 움직이는 속도가 달라져서 -_-;;
정규화가 필요한 거 같긴한데 어떻게 맞출까잉
속도를 출발시간 과 목표시간으로 바꿔야쥬~
출발 위치를 p1, 목표위치를 p2. 라고 하면
dur = 현재시각 - 출발시각, est = 목표시각 으로 둘 수 있고
est = 현재시각 + 거리 / 속력으로 정정.
(결국 목표시각이지만)
ela = 거리 / 속력 ( 경과시간 ) 으로 둡시당.
float pro = ( dur / ela ); 요건 진도가 되고, 현재 위치 p( pro ) = p1 * ( 1 - pro ) + p2 * pro; 가 되겠지유
그러면 프레임이 튀든 뭐하든 일정하게 현재시각 대비 있어야 할 위치에 있게 됩니당.
아하. 한 번 새롭게 방향을 잡아서 해보겠슴둥
그런데 제가 잘못 이해한 것일 수 있겠지만... 만약 새로운 좌표를 새로 찍는다고 했을때, 어떻게 새로운 좌표를 찍는지와 상관없이 항상 속도가 일정하게 하려면 어떻게 해야할까요 -_-? 위의 내용이 그것인데 제가 이해를 못했나?
ㅇㅇ 저건 항상 속도가 일정해짐요.
거리를 상수 속력으로 나누면 당연히 거리가 달라지면 움직임이 달라져 보이는것.
그건 실제 속력이 상수였던게 아님요. 걍 수치의 이름이 속력이었던거지.
결국 시간에 대한 식으로 바꿔야 한다는겁니당.
네. 그 바로위의 댓글이 제가 고치고 싶은것.... 거리가 달라져도 움직이는 속도를 일정하게
ㅇㅎ
그니까 지금 설명한 식에선, 현재시각만 읽어오면 제대로 다 시간식으로 풀어내기 땜에
속도가 일정해지는것.
방향벡터 를 정의하고 프레임마다 갱신시켜줘라
방향벡터는 목표좌표에서 현재위치벡터를 빼고 노말라이즈 하면 되겠지