Unity3D教程:模拟物理碰撞反弹

发表于2017-01-23
评论0 3.9k浏览
  一些游戏会要模拟物理碰撞反弹效果,可能有些游戏开发者因为不熟悉还不知道如何去处理,为此,下面就给大家介绍下Unity3D中的模拟物理碰撞反弹效果,一起来看看吧。
  
  根据入射方向得到反射方向,并保留相同速率。下面是代码的实现方式:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private Vector3 m_preVelocity = Vector3.zero;//上一帧速度
 
public void OnCollisionEnter(Collision collision)
{
    if (collision.gameObject.name == "wall")
    {
        ContactPoint contactPoint = collision.contacts[0];
        Vector3 newDir = Vector3.zero;
        Vector3 curDir = transform.TransformDirection(Vector3.forward);
        newDir = Vector3.Reflect(curDir, contactPoint.normal);
        Quaternion rotation = Quaternion.FromToRotation(Vector3.forward, newDir);
        transform.rotation = rotation;
        rigidbody.velocity = newDir.normalized * m_preVelocity.x / m_preVelocity.normalized.x;
    }
}

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

标签: