inflearn logo
강의

Course

Instructor

Unity 2D Game Development for Beginners Starting from Scratch

User Object Control 2

섹션1 유니티기초: 사용자 오브젝트 제어2

328

parkmira3232171

7 asked

0

vec = Vector3.zero;

이 부분을 Update()에 하지 않으면, 키를 누르고 있지 않아도 계속 이동하더라고요.

그 이유가 무엇인지 알 수 있을까요?

 

C# unity

Answer 2

0

gametrain

안녕하세요. 게임 트레이너입니다.

요즘은 시대가 좋아져서 AI가 답변을 달아주는군요 ^^

사용자가 입력한 키보드에 의해 vec 값이 지정되는데, 만일 vec = Vector3.zero;가 없으면 이 값이 남아서 delta에 값이 들어가고, 다시 transform.Translate(delta)에 들어가게 되어, 입력이 없는 상태에서도 vec에 있는 x나 y 값에 의해 계속 이동하게 됩니다. 이것을 막기 위해 vec의 x, y, z 값을 모두 0으로 만들어주는 Vector3.zero를 대입하는 것이죠.

0

communityai8509

안녕하세요, 인프런 AI 인턴이에요.

vec = Vector3.zero; 코드를 Update() 함수에 넣지 않으면 키를 누르고 있지 않아도 계속 이동하는 현상이 발생하는 이유는 다음과 같아요.

Update() 함수는 매 프레임마다 호출되는 함수로, 게임 오브젝트의 움직임을 갱신하는 역할을 합니다. 이 함수 안에 있는 코드는 매 프레임마다 동작하게 되는데, vec = Vector3.zero; 코드는 매 프레임마다 실행되지 않기 때문에 이전에 움직인 결과값이 그대로 남아있게 되죠.

따라서, 키를 누르고 있는 동안 vec 값이 변하고 이에 따라 게임 오브젝트가 움직이는 반면, 키를 누르지 않는 상황에서는 vec 값이 변하지 않아서 계속 이동하는 것처럼 보이는 것이죠.

이를 해결하기 위해서는 Update() 함수 내에서 키가 눌러지면 vec 값을 업데이트하도록 코드를 작성해야 합니다.

이해가 되셨을까요? 추가적인 질문이 있으시다면 언제든지 물어보세요. 감사합니다!

코드 관련 질문

0

21

2

섹션7 수업자료 업로드 부탁드립니다.

0

21

2

Dictionary Key를 int에서 string으로 변경한 이유에 대한 문의

0

18

1

프로젝트 질문 문의

0

45

1

UI 기능 관련 질문이 있습니다!

0

37

2

03-01 (16. CharacterController)

0

31

2

TLS 질문드립니다.

0

43

2

Task 구현 28:36 Equals 에서 잘 모르는 부분이 있습니다.

0

27

2

SpinLock과 컨텍스트스위칭에 대해 질문 남겨요.

0

46

2

픽셀 좌표 스크린 좌표

0

33

0

Locomotion랑 Turn 이 꼭 부모 자식 관계일 필요가 있나요?

0

25

1

Rider대신 VS를 써도 괜찮나요?

0

116

2

Claude Code Pro구독하고 있는 상태에서 크레딧 결제, 사용문의

0

217

2

LobbyUIController의 백키가 사라졌는데 왜그런건가요?

0

41

2

무조건 타이틀 씬부터 시작해야하나요?

0

41

1

BaseUI, UIManager

0

51

3

이수증 관려 문의 드립니다.

0

105

1

섹션2: 충돌처리

0

229

1

low resolution aspect ratios 체크박스 비활성화

0

612

1

섹션2: 충돌처리

0

192

1

섹션2: 에너미공격

0

295

1

섹션2: 에너미이동

0

215

1

섹션2: 에너미 이동2

0

361

2

섹션2: 서브루틴

0

373

1