我正在开发一款游戏,玩家可以使用绳索摇摆(就像《蜘蛛侠》或《仿生突击队》一样),并且在实现此行为时遇到问题。谁能帮助我做到这一点,我的意思是物理公式等等。到目前为止,我已经提出了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;