Unity - Raycast не работает, когда более одного сборного на сцене

Я создал скрипт, который использует RayCasting для обнаружения двух префабов: один префаб имеет тег "target", а второй префаб имеет тег "unTarget". При нажатии на prefab 1 с тегом "Target" предполагается увеличить счетчик, а при нажатии на prefab 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 ответ

Решение

GameObject.FindGameObjectWithTag Метод будет смотреть на всю вашу сцену для объекта с target как тег. Так как у вас есть один в сцене, который всегда будет возвращать истину, если вы нажмете что-то.

Вам нужно посмотреть на свойства RaycastHit и вытащить тег оттуда.

if (hit.collider.tag == "target") 
{
   score++;
} 
else 
{
   score--;
}
Другие вопросы по тегам