-
카테고리
-
세부 분야
게임 프로그래밍
-
해결 여부
해결됨
Move함수 만들 때 질문있습니다.
20.02.03 15:30 작성 조회수 179
0
moveInput.magnitude를 쓰는 이유가 게임패드를 쓸 때는 1보다 작은 값이 들어올 수가 있기 때문이라고 하셨는데 저걸 쓰면 왜 값이 1이 되는지 모르겠네요.
magnitude는 벡터의 크기(길이)를 반환한다고 알고 있는데 게임패드에서 쓴다고 하더라도 예를들어서 moveInput값에 (0.2 , 0)이라는 값이 들어온다면 moveInput.magnitude는 0.2²+0²=0.04가 되어서 1이 안되는거 아닌가요?
답변을 작성해보세요.
0
이제민
지식공유자2020.02.03
일단 설명하기 전에, 말씀하신 방식으로 동작하는 것은 sqrMagnitude 입니다.
sqrMagnitude는 제곱근을 구하는 연산을 아끼기 위해 사용합니다.
magnitude를 사용하게 되면, 마지막에 0.04의 제곱근을 구하는 연산이 실행되므로 값이 0.2가 됩니다.
-
코드의 의도를 제가 설명을 명확하게 하지 않았네요.
키보드와 달리 게임 패드는 살짝 미는 것이 가능합니다. 따라서 키보드일때는 항상 속도값을 100% 사용하되, 스틱을 사용하게 되는 경우에는 살짝 밀면 50%, 20% 같은 값을 사용할 수 있어야 합니다.
따라서 해당 코드의 의도는 속도가 항상 1(100%)가 아닌, 스틱을 민 정도에 따라 0~1 사이의 값을 쓰기 위해서 작성된 것입니다. 따라서 moveInput.magnitude는 값을 1로 만들기 위한 코드가 아니라, 0~1사이의 값을 쓰기 위한 코드입니다.
답변 1