유니티

[유니티]RayCast2D,RayCastHit2D

seyeol 2023. 3. 1. 15:38
반응형

[1] RayCast2D는 왜, 언제 사용하는것일까

터치한 오브젝트의 정보를 가져오거나 체크를 할때 그리고 물체의 Collider간의 충돌의 체크할때 주로 사용하는것 같다

 

[2] RayCast2D는 어떻게 사용하는것일까

RaycastHit2D는 true와 false를 반환합니다 

Physics2D.RayCast로 Ray라는 광선을 쏩니다 

그리고 Debug.DrawRay를 같이 사용하여 현재 광선을 시각화 해줍니다

RayCast의 속성에는 이런것들이 있는데 

Origin은 Ray 광선의 시작점 

Direction은 Ray 광선의 방향 

Ditance는 Ray 광선의 최대길이 

LayerMask는 지정한 레이어만 감지하는것

MinDepth는 지정한 Z좌표의 값보다 >= 크거나 같은 개체만 감지할수있게

MaxDepth는 지정한 Z좌표의 값보다 <= 작거나 같은 개체만 감지할수있게 

 

[Debug.DrawRay]

Debug.DrawRay는 내가 발사한 광선을 시각화 시켜주는 것입니다 

이것의 속성은

Start는 Ray광선의 시작점

Dir은 광선의 방향과 길이

Color는 광선의 색깔

Duration 광선의 지속시간

DepthTest는 광선과 물체가 겹쳤을때 카메라에 더 가까운 물체에 광선이 가려져야하는지 여부 true or false

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

public class Raycast2D : MonoBehaviour
{
    public float distance;
    

    // Update is called once per frame
    void Update()
    {
        RaycastHit2D hit = Physics2D.Raycast(transform.position, transform.right, distance);
        Debug.DrawRay(transform.position, transform.right * distance, Color.yellow); 
        if(hit.collider != null)
        {
            print(hit.transform.name);
        }
        
    }
}

영상 처럼 Scene뷰에 광선이 보일 텐데 이 광선이 보이지 않는다면 씬뷰 탭의 GIzmo를 활성화 시켜주셔야지 보이게 됩니다

그리고 Collider 2D가 감지할 오브젝트에 없다면 감지 할수 없습니다