Unity - 当Scene上有多个预制件时,Raycast无法正常工作

时间:2015-03-03 16:21:22

标签: c# unity3d monodevelop

我创建了一个使用RayCasting来检测两个预制件的脚本 - 一个预制件有一个名为" target"第二个预制件有一个名为" unTarget"的标签。点击预制1与"目标"标记它应该增加计数和点击预制件2与" unTarget"标记它应该减少计数。当场景中只有一个Prefab时,这似乎有效。当只添加一个并单击时,它将递增/递减。当两个预制件都在场景中时,两个预制件都会增加。我不确定为什么会这样。任何帮助或想法?对不起,如果我的代码有点乱。

using UnityEngine;
using System.Collections;

public class clicks : MonoBehaviour 
{

    public int score;  

    void Start()
    {
        score = 0;
    }

    // Update is called once per frame
    void Update() 
    { 
        if (Input.GetMouseButtonDown (0)) 
        {

            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            if (Physics.Raycast(ray, out hit,200))
            {
                if (GameObject.FindGameObjectWithTag ("target"))
                {
                    score++;
                }
                else 
                {
                    score--;
                }
            }
      }
}   

1 个答案:

答案 0 :(得分:2)

GameObject.FindGameObjectWithTag方法将查看整个场景中是否有target作为标记的对象。因为你在场景中有一个总会返回true,如果你碰到了什么。

您需要查看RaycastHit上的属性并从那里拉出标记。

if (hit.collider.tag == "target") 
{
   score++;
} 
else 
{
   score--;
}