스파이더 맨이나 바이오닉 코만도 처럼 로프를 사용하여 스윙 할 수있는 게임을 개발 중이며이 동작을 구현하는 데 문제가 있습니다. 누구 든지이 작업을 수행하는 방법을 도울 수 있습니까? 물리학 수식 등을 의미합니다. 지금까지 3 가지 아이디어를 생각해 냈습니다. 하나는 봄을 사용하지만 많은 시간을 소비하며 때로는 삐걱 거리는 경우가 있습니다. 다른 두 개는 다음 단계를 계산하려고 시도하고 (하나는 전위 에너지를 계산하고 다른 하나는 토크를 계산하여) 배우가 스윙하려고 할 때마다 둘 다 거의 충돌합니다.
토크를 계산하기 위해 작성한 코드는 다음과 같습니다.
float dx = Runner->getPosition().x - ancher.x;
float dy = Runner->getPosition().y - ancher.y;
float t0 = atan2(dy,dx); //my current angle
float k = ((dy) *vx - (dx) * vy) / (dx * dx+dy * dy); //previus angular velocity
k -= gravity * cos(t0) *dt; // new angular velocity (gravity is positive)
t0 += k * dt - acc * cos(t0) *dt * dt / 2; // rotate the rope
float dx1 = r0 * cos(t0); // new position (r0 is rope length)
float dy1 = r0 * sin(t0);
vx = (dx1 - dx) / dt; //calculate velocity
vy = (dy1 - dy) / dt;