유니티 Input System을 활용한 캐릭터 회전 구현Unity/Study2023. 11. 25. 17:00
Table of Contents
📌 캐릭터 회전 구현
- 탑다운 시점으로 캐릭터 회전을 구현한다.
- 마우스 바라보는 방향에 따라 플레이어 이미지 좌우 반전
📌 구현 목록
📄 PlayerInputController.cs
public void OnLook(InputValue value)
{
Vector2 newAim = value.Get<Vector2>();
Vector2 worldPos = _camera.ScreenToWorldPoint(newAim);
newAim = (worldPos - (Vector2)transform.position.normalized);
if (newAim.magnitude >= 0.9f)
{
CallLookEvent(newAim);
}
}
- 컨트롤러에 OnLook 매서드 추가
- 마우스 포지션을 월드 포인트 값으로 불러와 플레이어 위치와 비교
📄 TopDownRotation.cs
public class TopDownRotation : MonoBehaviour
{
[SerializeField] private SpriteRenderer characterRenderer;
private TopDownCharacterController _controller;
private void Awake()
{
_controller = GetComponent<TopDownCharacterController>();
}
private void Start()
{
_controller.OnLookEvent += OnAim;
}
public void OnAim(Vector2 mousePosition)
{
ApplyRotate(mousePosition);
}
private void ApplyRotate(Vector2 mousePosition)
{
// 마우스 위치에 플레이어 위치를 빼야 기준점이 잡힘
Vector2 direction = mousePosition - (Vector2)transform.position;
characterRenderer.flipX = direction.x <= 0;
}
}
- 플레이어 회전을 담당하는 클래스
- ApplyRotate에서 캐릭터는 화면 가운데가 아닌 계속 움직이므로 마우스 포지션을 받아와서 플레이어 위치를 뺴야함
- 좌우 반전만 하면 되어서 direction이 양수일 경우 오른쪽 아니면 왼쪽으로 바라보게 설정
💡 결과 화면
'Unity > Study' 카테고리의 다른 글
유니티 Manager System (0) | 2023.12.05 |
---|---|
유니티 2D 공 충돌 물리엔진 (0) | 2023.11.30 |
유니티 NPC 간단 대화 시스템 (0) | 2023.11.28 |
유니티 타일 꾸미기 (0) | 2023.11.25 |
유니티 Input System을 활용한 캐릭터 이동 구현 (0) | 2023.11.24 |