Unity - 当场景中有多个预制件时,Raycast 无法正常工作
Unity - Raycast not working when more than one prefab on Scene
我创建了一个使用 RayCasting 检测两个预制件的脚本 - 一个预制件有一个名为 "target" 的标签,第二个预制件有一个名为 "unTarget" 的标签。单击带有 "Target" 标记的预制件 1 时,它应该增加计数,而当单击带有 "unTarget" 标记的预制件 2 时,它应该减少计数。当场景中只有一个预制件时,这似乎有效。当只添加并单击时,它将 increment/decrement。当两个预制件都在场景中时,两个预制件都会增加。我不确定为什么会这样。任何帮助或想法?对不起,如果我的代码有点乱。
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--;
}
}
}
}
GameObject.FindGameObjectWithTag
方法将在整个场景中查找以 target
作为标记的对象。因为你在场景中有一个总是 return true,如果你撞到什么东西。
您需要查看 RaycastHit 上的属性并从那里提取标签。
if (hit.collider.tag == "target")
{
score++;
}
else
{
score--;
}
我创建了一个使用 RayCasting 检测两个预制件的脚本 - 一个预制件有一个名为 "target" 的标签,第二个预制件有一个名为 "unTarget" 的标签。单击带有 "Target" 标记的预制件 1 时,它应该增加计数,而当单击带有 "unTarget" 标记的预制件 2 时,它应该减少计数。当场景中只有一个预制件时,这似乎有效。当只添加并单击时,它将 increment/decrement。当两个预制件都在场景中时,两个预制件都会增加。我不确定为什么会这样。任何帮助或想法?对不起,如果我的代码有点乱。
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--;
}
}
}
}
GameObject.FindGameObjectWithTag
方法将在整个场景中查找以 target
作为标记的对象。因为你在场景中有一个总是 return true,如果你撞到什么东西。
您需要查看 RaycastHit 上的属性并从那里提取标签。
if (hit.collider.tag == "target")
{
score++;
}
else
{
score--;
}