inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Compass Bar #2

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

해결된 질문

55

손봉호

작성한 질문수 13

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);

}

}

C# unity

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 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 값 변경 - 방향 전환에 어려움을 겪는 사용자들이 작성한 여러 사례와 해결 과정들을 확인할 수 있습니다.

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

0

손봉호

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

0

손봉호

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

로 수정해서 해결하였습니다

public string Title { get; set; } 에서 WFO1000 오류가납니다.

0

8

0

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

0

29

1

강의 코드 파일은 혹시 어디에 있나요?

0

82

1

오브젝트 파괴 애니메이션문제

0

73

2

Atlas에서 만든 Item 이미지가 삐져나옵니다

0

98

2

3강의 내용이 1강과 동일합니다

0

76

2

Text Object 애니메이션 이슈

0

84

3

Material 방식 수정 후 처음 포탈 할때만 아래 오류가 발생합니다

0

113

4

Inventory #1 강의 31분 28초경 오류 납니다

0

59

1

World 좌표

0

73

1

자료 ?

0

94

2

Terrain 세팅 값 문의

0

103

1

Resources.RoadAll 질문

0

78

2

Inventory #1

0

115

2

Item 연출 13:24 - Asset Manager 를 거쳐서 데이터를 가져오는 이유

0

131

2

오브젝트활성화 > 오브젝트 Hit 이펙트 쪽 질문입니다

0

105

2

1:30 - cutdown > idle - NoneInteraction false ?

0

103

2

ItemClicktap오류

0

82

1

일꾼 구현하기 #2 부분 영상 오류?

1

141

3

TextMeshPro 폰트 깨짐

0

444

2

character movement 반응속도

0

154

2

인터렉티브 키 24:14 Destory 질문

0

173

1

move함수

0

162

2

폰트에 따라 번집니다.

0

279

2