Есть ли способ сравнить объект, пораженный лучевым вещанием, с другим игровым объектом? - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь создать сценарий, который будет проверять, указывает ли перекрестие на интерактивный объект, а затем при нажатии клавиши объект переместится в другое положение, однако я не могу найти функцию, которая не ' В моей ситуации выдается ошибка. Вот мой текущий код:

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 Ответ

1 голос
/ 25 марта 2019

Существует несколько способов сделать это.

1: Вы можете использовать систему слоев Unity. - Пометьте объекты, на которые вы хотите получать лучевую трансляцию, слоем (справа вверху рядом с метками)

  • Затем используйте маску слоя, когда вы используете raycast

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

  • Затем укажите layerMask на вашем raycast

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

Или вы можете просто получить название игрового объекта, по которому вы только что попали, с помощью hit.collider.gameObject.name (или тега или чего-либо еще)

...