Tôi đang phát triển một trò chơi trong đó người chơi có thể sử dụng dây thừng để xoay (giống như những gì Người nhện hoặc Bionic Commando đã làm) và tôi gặp vấn đề khi thực hiện hành vi này. Bất cứ ai có thể giúp tôi làm thế nào để làm điều này, ý tôi là các công thức vật lý và vv Cho đến bây giờ tôi đã đưa ra 3 ý tưởng. Một là sử dụng mùa xuân, nhưng nó tiêu tốn rất nhiều thời gian và đôi khi nó rất khó khăn. Hai người còn lại đang cố gắng tính bước tiếp theo (một thông qua tính toán năng lượng tiềm năng và một thông qua tính toán mô-men xoắn) và cả hai gần như sụp đổ bất cứ khi nào diễn viên đang cố gắng xoay.
Đây là mã tôi đã viết để tính mô-men xoắn:
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;