앞에서는 단순 좌우 위아래 움직임을 하였다면 이번 코드에서는 방향키 개선과, GameObject 회전, 회전한 머리방향의 기준으로 좌우위아래 움직이기를 설명할 것임
방향키 개선 - GetAxis()메서드
GetAxis 메서드란? 어떤 축에 대한 입력값을 숫자로 반환하는 메서드임
edit > project settings > input Manager에 지정된 값으로 물체가 움직임

float Input.GetAxis(string axisName);
메서드의 축의 이름을 받아 감지된 입력값 반환
Horizotal 축 수평
Vertical 축 수직
| InputGetAxis출력 값 | |||
| Horizontal(x) | Vertical(z) | ||
| 1.0 | ![]() |
1.0 | ![]() |
| 0 | ![]() |
0 | ![]() |
| -1.0 | ![]() |
-1.0 | ![]() |
private void ControllerAxis()
{
//Axis 축 아날로그 축을 가져오는것과 비슷
float vertical = Input.GetAxis("Vertical");
if(vertical != 0f)
{
transform.position =
transform.position +
(Vector3.forward * vertical * moveSpeed * Time.deltaTime);
}
float horizontal = Input.GetAxis("Horizontal");
}
내현재위치는 = 내 현재위치 + (앞으로 향하는 y값(forward) * 메서드에 입력된vertical 값 * 속력 * 한프레임마다의 시간)
회전 - 회전타입 쿼터니언, 짐벌락
현재 유니티 패널창에 있는 transform은 xyz로 입력받을 수 있게 나오는데 실제 타입은 쿼터니언임
쿼터니언이 나온 배경
오일러는 x축 곱하고 y축 곱하고, z축 곱하면 회전이 나오게됨
한축이 90도로 움직이게 되면 축이 같아지는 때가 옴 그렇게되면 결국 2개의 축만 사용이 가능해지는 상태가 됨
ex)옛날 총게임에서 하늘을 90도 꺽어서 머리윗 하늘을 볼 수 없는 이유와 같음



출처 : https://www.youtube.com/watch?v=yxMQKsab5TQ
짐벌락

if(Input.GetKey(KeyCode.Q))
{
Vector3 euler = transform.rotation.eulerAngles;
//euler.y += rotSpeed * Time.deltaTime;
euler.y -= rotSpeed * Time.deltaTime;
transform.rotation = Quaternion.Euler(euler);
}
회전방향으로 움직이기 - 전역공간, 오브젝트 공간 .. 추후작성
회전시 주의할 점 - 부모에 의한 자식의 회전과 스케일 확인




'유니티' 카테고리의 다른 글
| [유니티] 카메라 컴포넌트 (0) | 2025.04.09 |
|---|---|
| [유니티] 콜리전, 콜라이더, 트리거, 리지드바디 (0) | 2025.04.07 |
| [유니티] Transform 만들기-2 Vector Spaces (0) | 2025.04.03 |
| [유니티] Transform 만들기 -1 (0) | 2025.04.03 |
| [유니티] 라이프사이클 (0) | 2025.04.03 |





