반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 알고리즘
- 유니티 해상도 고정
- navmeshagent
- 엑셀 내보내기
- rider 설치
- Rider
- 엑셀 가져오기
- 스프레드시트 사용법
- 백준
- ilviewer
- 테크스트림
- ilcode
- 다른 시트값
- 진수 변환기
- unity 구버전
- navmesh
- unity
- C#
- Mac 상단바 아이콘 이동
- Mac
- 스프레드시트
- cmd키 변경
- 스프레드 시트
- 다각형 중점
- 한달리뷰
- monocraft
- unity 받기
- 유니티
- git
- 라이더
Archives
- Today
- Total
코스모스 공작소
[Unity] 3D 오브젝트 마우스 포인터 따라 이동하기 본문
반응형
3D 오브젝트 마우스 포인터 따라 이동하기
마우스 포인터에 따라 활성화된 3D오브젝트가 이동하는 부분이 필요하다.
요구 사항
- NewInputSystem 위에서 작동해야한다.
- orthographic 카메라 위에서 작동하지 않고 perspective 카메라에서 작동해야한다.
{
Vector3 pos = Mouse.current.position.ReadValue();
pos.z = 200;
pos = Camera.main.ScreenToWorldPoint(pos);
pos.z = 0;
// z 값을 수동으로 넣어주는 건 pos값이 그냥 그대로 변환하게 되면 정확한 값을 받아오지 않기 때문에
// pos좌표가 제대로 출력 안될때 각자 기준 축 상황에 맞추어 x,y로 변환해서 사용할것
objTrack.transform.position = pos;
}
- 위 코드는 orthographic에서는 제대로 작동하지만 perspective에서는 정상적으로 작동하지 않음
- 검색 결과 방법을 찾음
https://answers.unity.com/questions/566519/camerascreentoworldpoint-in-perspective.html
- 위 링크에서 소개하는 대표적인 방법을 2개 소개하자면
- ray를 이용하여 마우스 포지션에서 쏘고 일정거리에 오브젝트 생성시켜서 트래킹하는 방법
- Camera 2개를 두고 perspective 카메라는 렌더링, orthographic 카메라는 마우스 포인터를 따라다니는 오브젝트를 렌더링하는 방법
위 방법 중 2번은 만약 perspective 카메라와 포인터를 따라다니는 오브젝트와 상호작용할때 이슈가 발생할 여지가 있어 1번을 사용하기로 한다.
public Vector3 GetWorldPositionOnPlane(Vector3 screenPosition, float z)
{
Ray ray = Camera.main.ScreenPointToRay(screenPosition);
Plane xy = new Plane(Vector3.forward, new Vector3(0, 0, z));
float distance;
xy.Raycast(ray, out distance);
return ray.GetPoint(distance);
}
이제 perspective 카메라에서도 마우스 포인터에 3D 오브젝트가 따라다니는 것을 볼 수 있다.
반응형
'프로그래밍 > Unity' 카테고리의 다른 글
[C#] Stopwatch로 타이머를 만들자 (0) | 2023.06.20 |
---|---|
[Unity] 사운드 재생중 사운드 세팅 변경시 사운드 미출력 (0) | 2022.12.09 |
Unity 오브젝트 풀로 탄환 관리 최적화하기 (0) | 2019.12.12 |
Unity로 카메라 반동만들기 (camera shake) (0) | 2019.12.10 |
Unity 다이얼로그(대화창) 만들기 (8) | 2019.12.05 |
Comments