위치를 이동시키는 코드를 짜 본 사람이라면
누구나 공감할만한 주제가 하나 있다.
그것은 바로 대각선으로 이동할 때 빠르게 간다는 것이다.
상하좌우로 움직이는 코드를 만들었다면,
상 또는 하 키와 동시에 좌 또는 우 키를
동시에 누르면,
직관적으로 봤을 때조차 이동속도가 차이 나는 걸 느낄 수 있다.
눈으로 보이게 차이가 난다면 그건 심각한 정도의 차이이기에,
우리는 이걸 고칠 방법을 항상 고민하게 된다.
아마 이 주제에 대해 몇 번 찾아본 사람이라면
이 주제에 대한 정답인 VectorN.normalized라는 메서드를 알 텐데,
사실이게 정답이긴 하다.
normalized라는 기능은
벡터의 길이(magnitude)를 1로 만들어서
가하는 힘을 1로 고정시키고,
방향만을 결정하는 벡터가 되도록 변경해주는 기능인데,
(이걸 수학에선 단위 벡터라고 한다.)
https://alpaca-code.tistory.com/128(단위 벡터 직접 만들기)
특히 2D 게임에서, normalized를 썼음에도
정규화가 안 되는 경우가 종종 있다.
유튜버 골드 메탈님의 친절한 답변을 토대로
2D 게임에서의 normalized가 되지 않는 경우의
해결법을 제시하겠다.
사실 이 문제는 2D 게임은 3D 게임을 원근 없이
본 것과 같아서 일어나는 문제이다.
좌표계 또한 동일하기 때문에
2D 게임에선 쓰지 않는 Z 축은 실제로 남아있는데,
이 Z 축 때문에 이러한 문제가 일어난다.
그러니 이 Z 축을 0으로 만들어 주거나
하는 등의 조치로 이 문제를 예방해주면 된다.
도움이 되었길 바라며
끝.
'게임 개발 > 게임수학' 카테고리의 다른 글
게임수학) 게임을 만들때 삼각함수를 쓰는 예. (0) | 2023.01.20 |
---|---|
단위 벡터로 만들기. 벡터 크기 1로 만들기. 벡터의 정규화 하는법. (2) | 2023.01.17 |
소박한 집합론(수의 종류,구분) (0) | 2022.11.26 |
유니티 콜라츠 추측 계산기 - 2부 (2) | 2022.09.19 |
유니티 콜라츠 추측 계산기 - 1부 (0) | 2022.09.19 |
댓글