inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

레트로의 유니티 C# 게임 프로그래밍 에센스

PlayerMovement (2/4)

Move함수 만들 때 질문있습니다.

해결된 질문

308

luhc

작성한 질문수 7

0

moveInput.magnitude를 쓰는 이유가 게임패드를 쓸 때는 1보다 작은 값이 들어올 수가 있기 때문이라고 하셨는데 저걸 쓰면 왜 값이 1이 되는지 모르겠네요.

magnitude는 벡터의 크기(길이)를 반환한다고 알고 있는데  게임패드에서 쓴다고 하더라도 예를들어서 moveInput값에 (0.2 , 0)이라는 값이 들어온다면 moveInput.magnitude는 0.2²+0²=0.04가 되어서 1이 안되는거 아닌가요? 

unity C#

답변 1

0

이제민

일단 설명하기 전에, 말씀하신 방식으로 동작하는 것은 sqrMagnitude 입니다.
sqrMagnitude는 제곱근을 구하는 연산을 아끼기 위해 사용합니다.

magnitude를 사용하게 되면, 마지막에 0.04의 제곱근을 구하는 연산이 실행되므로 값이 0.2가 됩니다.

-

코드의 의도를 제가 설명을 명확하게 하지 않았네요.

키보드와 달리 게임 패드는 살짝 미는 것이 가능합니다. 따라서 키보드일때는 항상 속도값을 100% 사용하되, 스틱을 사용하게 되는 경우에는 살짝 밀면 50%, 20% 같은 값을 사용할 수 있어야 합니다.

따라서 해당 코드의 의도는 속도가 항상 1(100%)가 아닌, 스틱을 민 정도에 따라 0~1 사이의 값을 쓰기 위해서 작성된 것입니다. 따라서 moveInput.magnitude는 값을 1로 만들기 위한 코드가 아니라, 0~1사이의 값을 쓰기 위한 코드입니다.

코루틴 관련 질문 있습니다.

0

67

1

강의 업데이트 질문

0

89

1

궁금한 부분이 있어서 질문 남깁니다.

0

163

1

FreeLook 카메라 Zone 설정관련

0

115

1

와..정말 감탄이 나오네요..

0

146

1

추상 클래스에 대해 이해가 잘 안되었는데

0

118

1

IsTargetOnSight가 자꾸 false로 나와요.

0

105

2

레이캐스트 에셋 임포트하는방법을 모르겠어요.

0

87

1

레이케스트 에셋을 다운받았는데 임포트 방법을 모르겠습니다.

1

141

2

혹시 어드레서블 강좌 추가계획이 있으실까요?

0

126

1

시네머신 FreeLook 관련

0

223

1

텍스트 드래그 앤 드롭

0

378

2

안녕하세요 랜덤오브젝트 생성기에서 질문있습니다.

0

244

1

유니티 에디터 버전

0

375

1

text가 아닌 TextMeshPro를 사용해도 괜찮나요?

0

1733

2

상속 관련 질문입니다.

0

350

1

TPS 캐릭터 문제점 있습니다.

0

437

1

총을 쏴서 적을 맞췄을 때 저를 추적하는 코드는 어디 나와있나요??

0

278

0

github

0

305

0

wave 를 0으로 초기화해주는 부분이없는데 왜 0부터 시작하나요?

0

315

0

TPS게임 제작 Aim애니메이션 관련 질문 드립니다.

1

371

1

점프관련해서 UI버튼클릭을 통한 전달값에 대한 질문입니다.

0

306

1

인터페이스

1

239

0

혹시 본 강의에서 Dictionary 나온 파트가 있을까요?

0

270

0