其他声明并不统一?

时间:2016-12-29 21:30:04

标签: if-statement unity3d raycasting

好的,所以这是我的代码。这应该非常简单,但由于某些原因它并不想与我合作。 Raycast从鼠标发送光线,如果它遇到带有标签的对象,它会为变量分配一个数字。如果它没有命中对象,则将变量设置为-99。出于某种原因,我的意思是:

一个。我没有点击对象,它第一次输出-99但在此之后它会挂起以获得指定4。

B.我点击对象,它会正常工作。点击OFF对象后,它会挂在我之前点击过的对象的变量上。

em.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GameFunctions : MonoBehaviour {

int Hitnum = -99;
void Start () {
    }

    void Update () {

        if (Input.GetMouseButtonDown (0)) {
            objectCheck ();
        }

    }
    //end of UPDATE function



public void objectCheck () {
        RaycastHit hit; 
        Ray ray = camera.ScreenPointToRay (Input.mousePosition);
        if (Physics.Raycast (ray, out hit, 10000.0f)) {
            if (hit.collider.tag == "Box") {
                Hitnum = 1;
            } else if (hit.collider.tag == "Sphere") {
                Hitnum = 2;
            } else if (hit.collider.tag == "Pyramid") {
                Hitnum = 3;
            } else if (hit.collider.tag == "Trapezoid") {
                Hitnum = 4;
            } else {
                Hitnum = -99;
            }
        }
        Debug.Log (Hitnum);
    }
    //end of check

}

提前致谢。这让我疯了,因为它应该很简单。

编辑:这次发布完整代码,是的全部。我应该提到没有其他带有标签的对象,它只是零空间。这应该是孩子们非常基本的形状标识符。

编辑:编辑:如果你没有击中对象,我希望它能推出-99。后来我可能会对这些数字做点什么,但现在我开始需要解决这个问题。

1 个答案:

答案 0 :(得分:1)

重新启动统一,现在一切正常。谢谢。查看我的设置,看看有什么变化。我之前删除了背景标签上的背景。我猜团结决定如果没有点击光线投射,它会得到它最后命中的对象吗?