강의

멘토링

커뮤니티

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

심영근님의 프로필 이미지
심영근

작성한 질문수

[Unity] 함께 만들어가는 방치형 게임 개발

코인 획득 연출

코인 획득 강의 질문입니다.

작성

·

4

·

수정됨

0

안녕하세요 강사님 코인 획득연출강의를 듣다가 이해가 안되는 부분이 있는데요

IEnumerator Coin_Effect ( ) 함수 작성하신 부분에서

랜덤위치 5개 생성하는 부분은

RandomPos[i] = new Vector2(target.x, target.y)+ Random.insideUnitCircle * Random.Range(-m_DistanceRange, m_DistanceRange); //5개 코인의 랜덤 위치 생성

target.x, target.y(몬스터의 위치) 에다가 랜덤 값을 더한 월드좌표로 작성하셨는데

 

Coin_Parent에 딸려있는 5개 코인의 위치 설정할 때

rect.anchoredPosition = Vector2.MoveTowards(rect.anchoredPosition, RandomPos[i], Time.deltaTime * speed); 으로 작성하셨는데요..

 

rect.anchoredPosition 이 좌표는

RectTransform에 있는 anchoredPosition좌표로 기준점이 anchor를 기준으로 표시되는 좌표 아닌가요?

RandomPos[i]의 월드 좌표 의 값과 기준점이 다른데 어떻게 같이 쓸 수 있는건지 궁금합니다.

 

즉 anchoredPosition의 숫자 값 자체는

Vector2 형식이지만 그 (0,0) 기준점이 유동적(앵커 위치)인데 작성하신 코드로는 일반적인 월드 좌표와 같이 쓰셔서 잘 이해가 가지 않아서요..

 

혹시 제가 모르고 있는 부분이 있거나 놓치고 있는 부분이 없는지 궁금해서 질문을 올리게 되었습니다...

 

 

 

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 심영근님.

질문하신 내용을 통해 RandomPos와 rect의 위치 이동 방식이 어떻게 적용되는지 설명드리고자 합니다.

RandomPos와 rect.anchoredPosition의 차이

  1. RandomPos에 대해:

    • 이 값은 실제 월드 좌표 구조를 기반으로 하여 특정 범위 내에서의 무작위 위치를 생성하는 코드입니다. 이 값은 기본적으로 게임 월드 내의 정적인 좌표를 의미합니다.
  2. rect.anchoredPosition에 대해:

    • anchoredPosition은 UI 요소들에 사용되며, 부모 RectTransform을 기준으로 하는 상대적인 위치를 나타냅니다. 이 위치는 Anchor를 기준으로 하며, 0,0은 부모의 Anchor에 상대적인 좌표 기준입니다.

두 요소의 결합

  • 코드를 살펴보면, RandomPos에서 생성된 월드 좌표값을 UI RectTransform의 anchoredPosition으로 사용하여 이동시키고 있습니다. 여기서 중요한 점은 World 좌표를 UI 시스템의 Local 좌표로 변환하여야 정확한 위치 이동이 가능합니다. 직접적인 사용은 잠재적으로 올바르지 않은 결과를 초래할 수 있습니다.

해결 방법

월드 좌표와 앵커 기반 좌표계를 혼합하여 사용하려면, 월드 좌표에 대한 변환 작업을 진행해야 합니다. UI 요소에 대해 월드 좌표를 사용하려면 다음과 같이 RectTransformUtility 혹은 Transform 컴포넌트를 사용해 적절히 변환합니다:

  • WorldPosition to ScreenPosition:
    
    Vector2 screenPoint = Camera.main.WorldToScreenPoint(RandomPos[i]);
    

  • ScreenPosition to LocalPosition (RectTransform):
    
    RectTransformUtility.ScreenPointToLocalPointInRectangle(parentRectTransform, screenPoint, null, out Vector2 localPoint);
    

이해를 돕기 위해 유사한 문제를 다룬 게시물을 확인하실 수 있습니다.
- 캐릭터 이동 구현 rotation 값 변경: 유사한 내용을 다루며, 좌표계 변화 및 변환에 대한 설명을 포함하고 있는 사례입니다.

문제가 해결되길 바라며, 추가적인 궁금사항이 있으시면 언제든지 질문해 주세요. 곧 지식공유자께서 구체적인 도움을 주실 수 있을 것입니다.

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

심영근님의 프로필 이미지
심영근

작성한 질문수

질문하기