반응형
탑다운 게임에서 마우스로 조작을 할 때 마우스 커서 위치를 바라보는 경우가 있다.
private void Rotate()
{
// 마우스 커서의 위치를 바라봄
// ScreenPointToRay : 화면상의 점을 카메라 뷰포트 상의 원점으로 하는 레이 발사
Ray _cameraRay = Camera.main.ScreenPointToRay(Input.mousePosition);
// Vector3.up과 Vector3.zero (세계 좌표계의 원점)을 인자로 받아 Plane 객체 생성
// => 수평 평면으로 y=0을인 Plane 객체를 생성
// y=0인 평면 == 씬에서 오브젝트들이 배치되어 있는 평면
Plane _plane = new Plane(Vector3.up, Vector3.zero);
// 레이와 평면이 교차한 지점까지의 거리를 저장하는 변수
float _rayLength;
// 레이가 평면과 교차한 경우에만 로직 실행
// 레이와 평면의 교차 여부를 판단하고, 교차한 경우 true 반환
// out 키워드를 사용하여 rayLength 변수에 레이의 시작점으로부터 평면과의 교차 지점까지의 거리를 저장
if (_plane.Raycast(_cameraRay, out _rayLength))
{
// 레이의 시작점으로부터 주어진 거리만큼 떨어진 지점을 반환
Vector3 _lookDir = _cameraRay.GetPoint(_rayLength);
// 객체를 지정된 위치로 회전
transform.LookAt(new Vector3(_lookDir.x, transform.position.y, _lookDir.z));
}
}

반응형
'유니티 > 유니티 C#' 카테고리의 다른 글
[유니티/C#] SoundManager (0) | 2023.07.25 |
---|---|
[유니티/C#] Reflection으로 enum 받아오기 (0) | 2023.07.22 |
[유니티/C#] 라인렌더러를 이용한 움직이는 발판 (0) | 2023.06.16 |
[유니티/C#] UI 슬라이드 기능 만들기 (DOTween) (0) | 2023.06.15 |
[유니티/C#] 터치로 화면이동 (0) | 2022.08.07 |