강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

손봉호님의 프로필 이미지
손봉호

작성한 질문수

[Unity6] 나만의 서바이벌 게임 만들기

Compass Bar #2

AddMarker를 했는데 east와 west는 잘되는데, north/south가 거꾸로 인식되는데 어떻게 해야할까요?

작성

·

8

0

AddMarker를 했는데 east와 west는 잘되는데, north/south가 거꾸로 인식되는데 어떻게 해야할까요?

public void UpdateMarkers()

{

for (int i = ActiveMarkers.Count - 1; i >= 0; i--)

{

MarkerInfo markerInfo = ActiveMarkers[i];

if (markerInfo.TargetTransform == null)

{

Destroy(markerInfo.MarkerUI.gameObject);

ActiveMarkers.RemoveAt(i);

continue;

}

float heading = PlayerTransform.eulerAngles.y;

Vector3 directionToTarget = markerInfo.TargetTransform.position - PlayerTransform.position;

float distance = Vector3.Distance(markerInfo.TargetTransform.position, PlayerTransform.position);

float targetAngle = Mathf.Atan2(-directionToTarget.x, directionToTarget.z) * Mathf.Rad2Deg; // 각도 생성

float relativeAngle = (heading - targetAngle + 360.0f) % 360.0f;

float normalizedAngle = relativeAngle / 360.0f; //

float xPosition = Mathf.Lerp(-CompassWidth, CompassWidth, normalizedAngle);

markerInfo.MarkerUI.anchoredPosition = new Vector2(xPosition, markerInfo.MarkerUI.anchoredPosition.y);

markerInfo.MarkerText.text = string.Format("{0:0.0} m", distance);

}

}

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 손봉호 님.

제시해주신 코드를 바탕으로 보았을 때, NorthSouth가 거꾸로 인식되는 문제는 주로 방향 벡터에 대한 처리가 잘못되었을 가능성이 높습니다.

현재 UpdateMarkers 함수에서 방향을 계산하는 부분을 살펴보면, 방향을 계산할 때 xz 위치의 차이를 이용하여 각도를 구하고 있습니다. 여기서 잘못된 결과가 발생할 수 있는 요인은 방향 벡터의 x 축 변화가 역방향으로 계산되는 것입니다.

float targetAngle = Mathf.Atan2(-directionToTarget.x, directionToTarget.z) * Mathf.Rad2Deg;

위 코드에서 directionToTarget.x의 값에 음수를 곱하고 있기 때문에, NorthSouth의 방향이 뒤집혀 나타날 수 있습니다. 대신 directionToTarget.z에 음수를 곱하여 시도해 보시는 것은 어떨까요?

float targetAngle = Mathf.Atan2(directionToTarget.x, -directionToTarget.z) * Mathf.Rad2Deg;

이와 같은 변경이 NorthSouth의 표시 문제를 해결할 수 있을 것입니다.

관련된 다른 질문도 참고해 보시면 좋겠습니다:
- 캐릭터 이동 구현 rotation 값 변경 - 방향 전환에 어려움을 겪는 사용자들이 작성한 여러 사례와 해결 과정들을 확인할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

손봉호님의 프로필 이미지
손봉호
질문자

위와 같이 하니 East,와 West가 거꾸로 인식이 되고 있는데 어떻게 해야할까?

손봉호님의 프로필 이미지
손봉호

작성한 질문수

질문하기