【问题标题】:Is there a method to compare the object hit by a raycast to another gameobject?有没有一种方法可以将光线投射击中的对象与另一个游戏对象进行比较?
【发布时间】:2019-03-25 09:06:54
【问题描述】:

我正在尝试生成一个脚本,该脚本将检查十字准线是否指向交互式对象,然后当按下一个键时,该对象将移动到不同的位置,但是我似乎找不到一个不这样做的函数在我的情况下不会出现错误这是我当前的代码:

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 : 您可以使用 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(或标签或其他任何东西)获取刚刚点击的游戏对象的名称

    【讨论】:

    • 谢谢我试一试,然后回复你。干杯
    • 非常感谢,我只是错过了我的光线投射的出击。干杯
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    相关资源
    最近更新 更多