Saya mengembangkan permainan di mana pemain dapat menggunakan tali untuk berayun (seperti yang dilakukan Spiderman atau Bionic Commando ) dan saya mengalami masalah dalam menerapkan perilaku ini. Adakah yang bisa membantu saya bagaimana melakukan ini, maksud saya rumus fisika dan lain-lain. Sampai sekarang saya telah menghasilkan 3 ide. Salah satunya menggunakan pegas, tetapi menghabiskan banyak waktu dan kadang-kadang gelisah. Dua lainnya sedang mencoba menghitung langkah berikutnya (satu melalui menghitung energi potensial dan satu melalui menghitung torsi) dan keduanya hampir menabrak setiap kali aktor mencoba untuk mengayun.
Berikut adalah kode yang saya tulis untuk menghitung torsi:
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;