有没有一种方法可以将光线投射对象击中的对象与另一个游戏对象进行比较?

问题描述 投票:0回答:1

我正在尝试生成一个脚本,它将检查十字准线是否指向一个交互式对象,然后当一个键被按下时,该对象将移动到另一个位置但是我似乎无法找到一个不会提起的功能我的情况出现错误是我当前的代码:

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))
            {
                //  
            }
        }
c# unity3d raycasting gameobject
1个回答
1
投票

有多种方法可以做到这一点。

1:您可以使用Unity的图层系统。 - 使用图层标记要进行光线投射的对象(位于标签旁边的右上角)

  • 然后在光线投射时使用图层蒙版

LayerMask _myLayer = LayerMask.GetMask("the name of your layer");

  • 然后在光线投射上指定layerMask

if (Physics.Raycast(Camera.transform.position, Vector3.forward, (float)2), _myLayer)

或者你可以使用hit.collider.gameObject.name(或标签或任何东西)获取刚刚击中的gameObject的名称

© www.soinside.com 2019 - 2024. All rights reserved.