【问题标题】:Three.js circle to circle collision三.js圈对圈碰撞
【发布时间】:2016-10-14 19:22:15
【问题描述】:

我正在尝试为台球游戏实现循环碰撞。我试图让球在碰撞时以正确的方式弹开。我已经尝试了几个教程并阅读了有关 stackoverflow 的多个问题,但没有一个真正帮助我。

我的问题:我如何实现在这两种情况下有效的圆到圆碰撞: 1:一个运动的球与一个不动的球相撞。 2:一个移动的球与一个移动的球碰撞

我尝试过的教程之一:

tutorial

这是我目前拥有的代码,它在某种程度上可以工作,但非常有问题:

function newCollide(ball1, ball2)
{
    a = ball1.position.x - ball2.position.x;
    b = ball1.position.z - ball2.position.z;
    ab = Math.sqrt(((a * a) + (b * b)));
 
    if(ab <= 1.1)
    {
        console.log("collision");
        ball2.speedX = ball1.speedX;
        ball2.speedZ = ball1.speedZ;
        ball1.speedX *= 0.3;
        ball1.speedZ *= 0.3;

        ball1.position.x += ball1.speedX;
        ball1.position.z += ball1.speedZ;
        ball2.position.x += ball2.speedX;
        ball2.position.z += ball2.speedZ;
    }
}

感谢任何帮助。

【问题讨论】:

    标签: javascript three.js physics


    【解决方案1】:

    在相等的非旋转圆盘的碰撞中,圆盘只是简单地交换它们的速度矢量。

    在您的碰撞测试中,您还应该检查原始运动是否朝向彼此以避免虚假振荡。

    在碰撞过程中位置不会改变,你应该完全移除位置更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-05
      • 2015-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多