我正在制作游戏,目前我的物体在固定距离的球体周围连续旋转。我需要让对象互相反弹。有谁知道我怎么能这样做?
我有碰撞检测工作,每个对象都有一个边界球体。我能够获得碰撞点,我只需要从每个物体获取当前的旋转矢量并得到所产生的“反弹”角度(矢量旋转)并让每个物体继续围绕它的新矢量轨道运行。
如果这没有意义,或者你还需要什么,请告诉我!我应该提到这是使用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()
此时,物体不会以新碰撞的方向开始移动,然后不会反弹。它们似乎在发生碰撞时停止。