实施2d钟摆

时间:2012-08-22 17:57:23

标签: game-physics

我在我的蠕虫般的游戏中实施了一个2d摆锤用于绳索动作,我最初打算使用角度公式,即angleNow = maxAngle * cos( sqrt(g/length) * t),但问题是我如何处理绳索中的人的碰撞。现在我正在使用经典力学,我正在计算每一瞬间的向心力centripetal = gravity_constant * cos(speed_angle) + pow(speed,2)/length。因此,绳索中的人有两条力,一条是重力,另一条是向心,这是变化的所有的时间。我使用公式 deltaVelocity = acceleration * (time - this.lastTime)计算速度变化,这可能是问题,因为重力三角洲和向心三角洲的更新不一致。 现在的问题是绳索的长度总是在变化,而不是钟摆,绳索倾向于向一侧走很远然后再回来。

顺便说一下,游戏是基于网络的,我使用javascript来实现它,谢谢你提前。 这是我用来计算向心的代码:

this.magnitude = (Math.pow(character.velocityX,2) + Math.pow(character.velocityY,2))/sprite.length;
            this.angle = Math.atan(character.velocityY/character.velocityX);
            this.delta =  GRAVITY_CONSTANT * Math.cos(this.angle);
            this.magnitude += this.delta;
            character.velocityX += this.magnitude * Math.sin(this.angle) * ((time - this.lastTime) /1000);
            character.velocityY -= this.magnitude * Math.cos(this.angle) * ((time - this.lastTime) /1000);  

0 个答案:

没有答案