Unity/C# note
유니티 Raycast 노트
오발탄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를 그릴 수 있다.
반응형