유니티 Ray/RaycastHit 충돌 체크

728x90

https://docs.unity3d.com/kr/2019.3/ScriptReference/Ray.html

 

UnityEngine.Ray - Unity 스크립팅 API

Representation of rays.

docs.unity3d.com

 

유니티 Ray/RaycastHit 설정하기

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Ray : MonoBehaviour
{
    public Transform PointObj;
    Ray ray;
    RaycastHit hit;
    // Update is called once per frame
    void Update()
    {
        if(Input.GetMouseButtonDown(0))
        {
            UnityEngine.Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out hit))
            {
                Debug.Log("hit = " + hit.point);
                PointObj.position = hit.point;
            }
        }
    }
}

왼쪽 마우스 클릭한 지점에 Ray를 쏴서 PointObj(빨간색 공)를 위치시키는 코드를 작성했다. public으로 선언된 PointObj는 Transform값을 가지기 때문에 Vector3 값으로 변환해주기 위해 PointObj뒤에 position을 추가해 hit.point를 가져와주었다. Input.mousePosition에서 mousePosition도 Vector3 값을 가진다.

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Ray2 : MonoBehaviour
{
    public Transform pointObj;
    UnityEngine.Ray ray;
    RaycastHit hit;
    // Update is called once per frame
    void Update()
    {
        if(Input.GetMouseButtonDown(0))
        {
            ray.origin = transform.position;
            ray.direction = transform.right;
            if(Physics.Raycast(ray,out hit))
            {
                Debug.Log("Hit = " + hit.point);
                pointObj.position = hit.point;
            }
        }
    }
}
728x90