나는 내 화면의 왼쪽에 위아래로 이동할 수있는 이미지 (단순한 사각형이라고 가정 해 봅시다)가 있습니다. 그것을 위쪽으로 움직일 때, 나는 간단한 삼각법을 사용하여 그것을 회전시켜 사각형이 화면의 오른쪽 위 모서리를 향하도록한다. 아래쪽으로 움직일 때 화면의 왼쪽 아래 모서리를 가리 킵니다. 상부 (위치회전 끼우기
// moving upwards
rotation = -atan2(position.y , res.x - position.x));
// moving downwards
rotation = atan2(res.y - position.y , res.x - position.x));
res
기준점이다
및 position
된다
I의 회전을 달성하기 위해 다음과 같은 코드를 사용
내 애플리케이션 좌표 다음 시스템을 사용하는 점을 감안 왼쪽 모서리). (atan2()
에 대한 정보 :
atan2() on cplusplus.com).
이것은 잘 작동합니다. 기준점 (res)에서 멀어 질수록 더 회전합니다. 그러나 이미지가 화면 맨 아래에 있다고 가정 해 봅시다. 그것을 위로 움직이면 갑자기 회전합니다. 나는이 회전을 'inbetween'하고 싶다. 그래서 그것은 부드러워진다.
갑자기 회전한다는 것은 다음과 같습니다. 사각형이 프레임 n에서 이동하지 않는다고 가정하면 회전 각도는 0도입니다. 그 다음 각도를 계산하는 위쪽 화살표를 누릅니다. 프레임 n + 1에서 각도는 30도입니다 (예 :). 물론 이것은 매끄럽지가 않습니다.
제 질문은 명확합니까? 어떻게해야합니까?
완벽하게 작동합니다! 감사! – RaptorDotCpp
회전 속도 시간을 독립적으로 만들려면 델타 시간을 포함해야합니다. – Paranaix
@Paranaix 예, 지수 방정이어야하는이 방정식에 파라 메트릭 양식을 사용합니다. 애니메이션의 중요성과 이러한 노력이 가치가 있는지 여부에 달려 있습니다. – Zong