我正在开发一款游戏,我目前有物体以固定距离连续围绕球体运行。我需要让物体相互反弹。有谁知道我该怎么做?
我有碰撞检测工作,每个对象都有一个边界球。我能够获得碰撞点,我只需要从每个对象中获取当前的旋转向量并获得由此产生的“反弹”角度(要旋转的向量)并让每个对象继续围绕它的新向量运行。
让我知道这是否没有意义或您是否需要其他任何东西!我应该提到这是使用 Unity3D 完成的(出于性能原因,我没有使用刚体或内置物理引擎)
编辑:
这是我尝试过的:
public void OnTriggerEnter(Collider collider)
{
// Determine resultant rotation axis
Vector3 collisionNormal = collider.ClosestPointOnBounds(thisTransform.position);
rotationAxis = Vector3.Reflect(rotationAxis, collisionNormal);
}
这是 Unity3D 文档中 Vector3.Reflect() 方法的链接:Vector3.Reflect()
在这一点上,物体不会开始向新的方向移动,它们会发生碰撞,然后不会反弹。当碰撞发生时,它们似乎停止了。