Unity C#碰撞

时间:2019-03-04 16:42:24

标签: c# unity3d

如何为两个对象之间的碰撞检测创建脚本。这是我的代码:

using UnityEngine;

public class PlayerCollision : MonoBehaviour
{
    public PlayerMovement movement;

    void OnCollisionEnter (Collision collisionInfo)
    {
        if (collisionInfo.collider.tag == "Obstacle")
        {
            movement.enabled = false;
        }
    }
}

1 个答案:

答案 0 :(得分:2)

https://docs.unity3d.com/ScriptReference/Collider.OnCollisionEnter.html看,您编写的代码没有错。

这些方法使用失败的常见原因是由于您在PlayerMovement脚本中处理移动的方式(在这种情况下)。

例如,如果直接通过position属性修改变换的位置,则不会计算诸如碰撞之类的物理操作。 https://docs.unity3d.com/ScriptReference/Transform-position.html

另一个常见原因是您没有在其中一个对象上附加刚体,因此不会触发碰撞操作。

请在此处查看“冲突行动矩阵”部分: https://docs.unity3d.com/Manual/CollidersOverview.html