Oyuncunun ipleri (Örümcek Adam veya Biyonik Komando'nun yaptığı gibi) sallamak için kullanabileceği bir oyun geliştiriyorum ve bu davranışı uygularken sorun yaşıyorum. Bunu nasıl yapabileceğimi kimse bana yardımcı olabilir mi, yani fizik formülleri vb. Şimdiye kadar 3 fikir buldum. Biri yay kullanıyor, ama çok zaman alıyor ve bazen ürkek oluyor. Diğer ikisi bir sonraki adımı (biri potansiyel enerjiyi ve diğeri torku hesaplayarak) hesaplamaya çalışıyor ve her ikisi de oyuncu sallanmaya çalıştığında neredeyse çöküyor.
İşte torku hesaplamak için yazdığım kod:
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;