상세 컨텐츠

본문 제목

유니티 Raycast 노트

Unity/C# note

by 오발탄LAB 2021. 3. 5. 01:52

본문

반응형
Physics.Raycast(From Position, Direction, out hit, length, layerMask)

////

// 8 layer만 충돌 
int layerMask = 1<<8;

// 8 layer 제외한 모든 layer와 충돌가능
layerMask = ~layerMask; 
int layerMask = ~(1<<8) 이런식으로도 작성 가능

private void FixedUpdate(){

 RaycastHit hit;
 float rayLength = Mathf.Infinity;
 if(Physics.Raycast(transform.position, transform.up, out hit, rayLength, layerMask))
 {
 // ray 디버깅
 Debug.DrawRay(transform.position, transform.TransformDirection(Vector3.forward) * hit.distance, Color.yellow);

 }
}

 

 

유니티 LayerMask 노트

 String으로 LayerMask 얻기 LayerMask mask = LayerMask.GetMask("Wall");  Inspector에서 선택하기 public LayerMask groundLayer;  숫자 // 8번 과 9번 layer만 충돌 가능 private LayerMask groundLayer = 1<

obaltan-lab.tistory.com

 지면 각도 감지하기 

 private void FixedUpdate()
    {
        grounded = false;
        RaycastHit hit;

        if (Physics.Raycast(groundRayPoint.position, -tr.up, out hit, groundRayLength, whatIsGround))
        {
            grounded = true;
            tr.rotation = Quaternion.FromToRotation(tr.up, hit.normal) * tr.rotation;
        }
        
    }

 

마우스 클릭으로 3D 공간 선택

 

특정 방향으로 raycast gizmo line 그리기

 

gizmo를 그릴때는 항상 처음 부분과 마지막부분의 position값을 입력하게 된다. 

(position, position + dir) 이와 같이 포지션을 작성하면 원하는 방향으로 gizmo를 그릴 수 있다.

반응형

관련글 더보기

댓글 영역