无法检测到与对方玩家发生碰撞

时间:2018-04-18 12:12:47

标签: c# unity3d

我为蛇做了一个光线投射,以检测他是否与自己,食物或敌人相撞,它与食物和他自己一起工作正常但是当他与敌人碰撞时他只是通过了。

这是检测冲突的代码:

RaycastHit hit;

if (Physics.Raycast(HeadBone.position, HeadBone.right, out hit, 1))
{
    if (hit.transform.tag == "Player")
    {
        NetworkManager.instance.GetComponent<NetworkManager>().CommadSuicide(transform.name);
        return;
    }
    else if (hit.transform.tag == "Enemy")
    {
        NetworkManager.instance.GetComponent<NetworkManager>().KillTarget(hit.transform.name);
    }
    else if (hit.transform.tag == "Food")
    {
        Eat(hit.transform.gameObject);
    }
}

1 个答案:

答案 0 :(得分:-1)

您错过了退货声明

如果将return语句放在if,while或for语句中,则它可能会返回值,也可能不会返回值。如果它不会进入这些语句,那么该方法也应返回一些值(可能为null)。为了确保这一点,编译器将强制您编写此返回语句,该语句位于if,while或for。

之后

但是如果你编写if / else块并且其中每一个都有一个返回值,那么编译器就会知道if或者else会得到执行,而method会返回一个值。所以这次编译器不会强迫你。

    RaycastHit hit;

        if (Physics.Raycast(HeadBone.position, HeadBone.right, out hit, 1))
        {
            if (hit.transform.tag == "Player")
            {
                NetworkManager.instance.GetComponent<NetworkManager>().CommadSuicide(transform.name);
                return;
            }

            else if (hit.transform.tag == "Enemy")
            {
                NetworkManager.instance.GetComponent<NetworkManager>().KillTarget(hit.transform.name);
                return;
            }

            else if (hit.transform.tag == "Food")
            {
                Eat(hit.transform.gameObject);
            }
        }