Unity OnCollisionEnter函数未注册

问题描述

我无法注册OnCollisionEnter();我已经从以前的Unity程序复制了该函数,该程序可以工作并复制了所有内容。 FPSController之间的冲突应降低TreeHealth。

enter image description here

enter image description here

    void OnCollisionEnter(Collision collision)
    {
        print("Colision");
        if (collision.gameObject.tag == "TreeTag")
        {
            treeScript = collision.gameObject.GetComponent<TreeFall>();
            treeScript.treeHealth--;
        }
    }

解决方法

您尝试使用OnControllerColliderHit吗?我认为,如果使用OnCollisionEnter组件移动字符,则必须使用此方法而不是CharacterController

,

我建议您用Debug.Log()替换print()函数,并在树脚本中检测冲突,并检查播放器是否存在冲突。