मैं एक गेम विकसित कर रहा हूं जिसमें खिलाड़ी रस्सियों को स्विंग करने के लिए उपयोग कर सकता है (जैसे स्पाइडरमैन या बायोनिक कमांडो ने किया था) और मुझे इस व्यवहार को लागू करने में समस्या हो रही है। क्या कोई मुझे यह करने में मदद कर सकता है, मेरा मतलब है कि भौतिकी के सूत्र और आदि। अब तक मैं 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;