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--;
}