캐릭터 이동 구현 rotation 값 변경
강의 자체에서는 Scale 값을 음수로 변경해서 캐릭터의 방향을 전환했는데 혼자서 rotation 값으로 방향 전환을 해보려다 실패해서 질문 남깁니다.
position : 오브젝트의 현재 위치
eulerAngles : 오브젝트의 회전 각도
localScale : 오브젝트의 크기
이 내용을 기반으로
if(Input.GetKey(KeyCode.RightArrow))
{
transform.Translate(speed * Time.deltaTime, 0, 0);
transform.eulerAngles= new Vector3(0f, 0f, 0f);
} else if (Input.GetKey(KeyCode.LeftArrow)) {
transform.Translate(-speed * Time.deltaTime, 0, 0);
transform.eulerAngles= new Vector3(0f, 180f, 0f);
}
코드를 이렇게 작성했는데 캐릭터 자체의 방향 전환만 되고
방향키대로 움직이지 않습니다.
Rotation 값으로 캐릭터의 방향 전환을 하려면 어떻게 코드를 수정해야 할까요?
Answer 2
0
안녕하세요! 너무 늦게 답변드려 죄송합니다.
일단 기본적으로 'Tranlsate' 함수는 물체의 이동을 손쉽게 구현 할 수 있는 하나의 유니티 내장 함수라고 생각하시면 됩니다.
Translate는 기본적으로 로컬 좌표에서 동작을 하게 됩니다. 로컬 좌표라는 것은 캐릭터의 현재 회전 값에도 영향을 받기에, 회전이 반대편으로 되어 있다면 해당 캐릭터가 바라보는 방향이 설정이 되면서 -값을 곱해주셔도 캐릭터의 회전이 적용되어 앞으로 나아가는 현상이 생기게 됩니다.
좀 더 쉽게 설명드리면 Translate는 기본적으로 'Space.Self'라는 로컬 좌표이고, 캐릭터의 바라보는 방향에 영향을 받아서 캐릭터를 180도 회전을 시키면 바라보는 방향이 반대가 되면서 생기는 문제입니다.
이 경우 Translate를 월드 좌표로 변경을 해 주시면 됩니다.

Translate를 월드 좌표계로써 물체의 이동을 처리하시려면 함수 끝 부분에 ','와 함께 Space.World를 작성해주시면 되겠습니다.
OAuth방식 강의 문의
0
9
0
싱글턴패턴
0
3
1
코드 관련 질문
0
21
2
섹션7 수업자료 업로드 부탁드립니다.
0
22
2
Dictionary Key를 int에서 string으로 변경한 이유에 대한 문의
0
19
1
프로젝트 질문 문의
0
45
1
UI 기능 관련 질문이 있습니다!
0
37
2
03-01 (16. CharacterController)
0
31
2
TLS 질문드립니다.
0
43
2
anim.SetTrigger("IsHit")이 해제가 안됩니다.
0
53
1
Dictionary 관련 메소드 사용 질문 드립니다.
0
64
1
8:56초 b.Remove(3) 부분 설명에 대해 질문드립니다.
0
55
2
2D게임에서 트램플린 Trigger감지관련
0
111
1
Tilemap Collider 2D 사용 시 평지에서 캐릭터가 안 움직이는 현상
1
166
1
Game화면에서 캐릭터가 끊기듯 움직입니다.
0
158
1
Start 자동 완성이 안됩니다.
0
179
2
섹션2. 메서드와 접근자에서 잘못된 설명이 있어요.
0
202
2
애니메이션 점프 적용되지 않는 문제
0
319
2
안녕하세여 3D 오브젝트 Material 관련 질문입니다
1
230
1
제가 놓친 부분이 있는데 혹시 어디서 확인할 수 있나요...?
1
323
2
화면 설정 문의의 건
2
249
2
anim.SetBool
1
308
2
Start문 자동완성
2
231
1
2D Object에 Square가 안나옵니다 ㅠ
2
438
2

