有没有一种方法可以将光线投射命中的对象与另一个游戏对象进行比较?
Is there a method to compare the object hit by a raycast to another gameobject?
我正在尝试制作一个脚本来检查十字准线是否指向一个交互式对象,然后当按下一个键时该对象将移动到不同的位置但是我似乎找不到一个函数在我的情况下不会出现错误这是我当前的代码:
public class Filingcabinetopen : MonoBehaviour {
public GameObject draw;
public GameObject Camera;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (Physics.Raycast(Camera.transform.position, Vector3.forward, (float)2))
{
if (draw.Equals(RaycastHit.transform.gameObject))
{
// This is where my logic for the interaction will go but as of right now the selection statement doesn't work.
}
}
}
}
我对 c# 几乎一无所知,这是我第一次使用它,我决定承担一项艰巨的任务,所以请帮忙:)
我试过使用几种不同的方法,但我似乎无法从被光线击中的对象中获取游戏对象或标签。
我使用的另一个例子是:
if (Physics.Raycast(Camera.transform.position, Vector3.forward, (float)2))
{
RaycastHit RayObj;
if (draw.Equals(RayObj))
{
//
}
}
您可以通过多种方式做到这一点。
1 : 你可以使用Unity的图层系统。
- 标记您希望能够使用图层进行光线投射的对象(在标签的右上角)
- 然后在光线投射时使用图层蒙版
LayerMask _myLayer = LayerMask.GetMask("the name of your layer");
- 然后在你的 raycast 上指定 layerMask
if (Physics.Raycast(Camera.transform.position, Vector3.forward, (float)2), _myLayer)
或者您可以使用 hit.collider.gameObject.name
(或标签或任何东西)
获取您刚刚击中的游戏对象的名称
我正在尝试制作一个脚本来检查十字准线是否指向一个交互式对象,然后当按下一个键时该对象将移动到不同的位置但是我似乎找不到一个函数在我的情况下不会出现错误这是我当前的代码:
public class Filingcabinetopen : MonoBehaviour {
public GameObject draw;
public GameObject Camera;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (Physics.Raycast(Camera.transform.position, Vector3.forward, (float)2))
{
if (draw.Equals(RaycastHit.transform.gameObject))
{
// This is where my logic for the interaction will go but as of right now the selection statement doesn't work.
}
}
}
}
我对 c# 几乎一无所知,这是我第一次使用它,我决定承担一项艰巨的任务,所以请帮忙:)
我试过使用几种不同的方法,但我似乎无法从被光线击中的对象中获取游戏对象或标签。 我使用的另一个例子是:
if (Physics.Raycast(Camera.transform.position, Vector3.forward, (float)2))
{
RaycastHit RayObj;
if (draw.Equals(RayObj))
{
//
}
}
您可以通过多种方式做到这一点。
1 : 你可以使用Unity的图层系统。 - 标记您希望能够使用图层进行光线投射的对象(在标签的右上角)
- 然后在光线投射时使用图层蒙版
LayerMask _myLayer = LayerMask.GetMask("the name of your layer");
- 然后在你的 raycast 上指定 layerMask
if (Physics.Raycast(Camera.transform.position, Vector3.forward, (float)2), _myLayer)
或者您可以使用 hit.collider.gameObject.name
(或标签或任何东西)