객체의 이전 위치가 속도 벡터 대신 상태로 저장된 많은 2D 게임 튜토리얼과 서적을 보았습니다. 그런 다음 각 프레임마다 위치 차이로 속도가 계산됩니다.
그 방법의 장점은 무엇입니까?
객체의 이전 위치가 속도 벡터 대신 상태로 저장된 많은 2D 게임 튜토리얼과 서적을 보았습니다. 그런 다음 각 프레임마다 위치 차이로 속도가 계산됩니다.
그 방법의 장점은 무엇입니까?
답변:
여러분이 읽은 튜토리얼이나 책을 정확히 알지 못하면 여기에 내가 말할 수있는 것이 있습니다.
물리 정의 측면에서보다 정확하려면 벡터 방향은 현재 위치와 마지막 위치의 차이로 계산됩니다. 벡터 속도는 한 위치에서 다른 위치로 갈 때 경과 시간으로 나눈 것과 같습니다. 참조 : http://www.physicsclassroom.com/class/1DKin/Lesson-1/Speed-and-Velocity
그러나, 경과 된 시간이 일반적인 "1 프레임", 즉 마지막 프레임에서 현재까지 고려 될 때, 벡터 속도 및 벡터 방향은 동일하게된다. 의사 코드에서 :
direction = current_position - past_position
elapsed_time = 1 frame
velocity = direction / elapsed_time
따라서 일반적으로 마지막 프레임에 위치를 저장하고 현재 프레임에서 위치를 얻는 주된 이유는 업데이트 된 방향 (및 업데이트 된 속도)을 알 수있는 유일한 방법이거나 가장 저렴한 방법 일 수 있기 때문입니다. 즉, 현재 프레임에서의 이동 방향.
주어진 프레임에 방향 (또는 속도)을 저장한다고 가정하십시오. 다음 프레임에서 방향 (또는 속도)이 변경되었는지 알 수있는 유일한 방법은 다시 계산하는 것입니다. 그 이유는 이전 방향 또는 이전 속도 때문에 한 프레임에서 다음 프레임으로 이동이 변경된 경우 현재 방향 또는 현재 속도를 알 수 없습니다.
이제 자신의 질문에 대한 주석에서 언급 한 자습서를 고려하면 더 명확 해집니다. 튜토리얼 중 하나에서 저자는 다음과 같이 말합니다.
이제 파티클에 Verlet 통합으로 이동하는 방법을 알려 드리겠습니다. 이는이 프레임의 위치를 마지막 프레임의 위치와 비교하여 입자가 얼마나 빠르게 움직이는 지 알 수있는 멋진 방법입니다. 왜? 입자의 현재 위치가 바뀌면 속도가 자동으로 업데이트됩니다.
보시다시피, 마지막 프레임 위치를 저장하면 위에서 말했듯이 객체 (자습서에서 입자)가 위치를 변경할 때 현재 프레임의 속도 계산이 업데이트됩니다. 마지막 프레임에서 방향 또는 속도 만 저장 한 경우 위치가 과거에서 현재 프레임으로 변경된 경우 쉽게 업데이트 할 수 없습니다. 따라서 연결된 다른 자습서에서 지적했듯이 이전 위치를 저장하면 위치가 변경 될 때 속도를 자동으로 업데이트 할 수 있습니다.