为什么剧本现在不像以前那样工作?

时间:2016-11-18 03:33:08

标签: c# unity3d

这是脚本的顶部:

using UnityEngine;
using System.Collections;
using System.Reflection;

public class DetectPlayer : MonoBehaviour {

    GameObject target;
    int counter = 0;

    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.name == "Platform")
        {
            Debug.Log("Touching Platform");
        }        
    }

我使用调试器和断点,它确实到了行

if (collision.gameObject.name == "Platform")

在gameObject的属性名称上,我看到:" ThirdPersonController"但它永远不会进入Debug.Log

脚本附加到平台,如屏幕截图所示。我正在运行游戏,当它触摸它时将玩家移动到平台它会在断点处停止但从不进入Debug.Log

Screenshot

2 个答案:

答案 0 :(得分:2)

如果你的对手没有附加到名为 collision.gameObject.name会在你的对手附着的游戏对象上进行调用>平台,然后它就不会被调用。

答案 1 :(得分:1)

我认为@MiladQasemi是对的,但我会尝试用另一种方式解释它。

我看到的问题是,您的脚本附加到平台对象,因此代码if (collision.gameObject.name == "Platform")永远不会成立。 因为脚本和平台是一个,所以对象不能与自身发生冲突。

将代码更改为:

if (collision.gameObject.name == "ThirdPersonController")