ฉันกำลังพัฒนาเกมที่ผู้เล่นสามารถใช้เชือกในการแกว่ง (เช่นเดียวกับที่ Spiderman หรือBionic Commandoทำ) และฉันมีปัญหาในการใช้พฤติกรรมนี้ ทุกคนสามารถช่วยฉันได้อย่างไรฉันหมายถึงสูตรฟิสิกส์และอื่น ๆ จนถึงตอนนี้ฉันมี 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;