• 티스토리 홈
  • 프로필사진
    개양반
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
개양반
  • 프로필사진
    개양반
    • Everybody Happyvirus (87)
      • Unity DOTS (19)
        • ECS Sample Projtect (8)
        • Unity.Physics (1)
        • TIP (9)
      • Unity Assets 추천 (6)
        • BG Database (5)
        • I2 Localization - 현지화 (1)
      • Unity 자습서 (15)
        • Addressable (4)
        • 유니티 + 파이어베이스 (0)
        • GamingServices (10)
      • 주식 이야기 (4)
        • 회사 소개 (2)
        • 회사 정보 (1)
        • 실적 발표 (0)
      • 일상 생활 (9)
        • 도서리뷰 (2)
        • 제품리뷰 (6)
      • 게임일기 (2)
        • 리그오브레전드 (2)
      • 게임소개 (4)
      • 게임리뷰 (7)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • UNITY DOTS - 거리 계산하기
        2022년 11월 25일
        • 개양반
        • 작성자
        • 2022.11.25.:09

        Unity DOTS 에서 수학 패키지로 using Unity.Mathematics를 사용해야 한다.

        using Unity.Mathematics에서 제공하는 오브젝트 간의 거리를 계산하는 함수에는 math.distance와 math.distancesq 2개가 존재한다. 

        1. math.distance

        정확한 거리를 계산할 때 사용한다. 두 점간의 제곱 거리에 루트를 한 값이라 컴퓨터 성능에 악영향을 끼친다.

        컴퓨터는 나누셈 연산에 잼병이다.

        math.distance(AEntity의 위치, BEntity의 위치);

         

        2. math.distancesq

        정확한 거리를 측정할 때는 좋지 않지만 루트 연산을 하지 않으므로 성능에 좋다.

        위 Distance의 거리 계산에서 루트 계산을 하지 않은 두 점 사이의 제곱 거리를 반환한다. 

        math.distancesq(AEntity의 위치, BEntity의 위치)

         

        2-1 math.distancesq 예제

        math.distancesq 는 제곱 거리를 반환하므로 비교 대상의 길이도 비교를 할 때는 벡터에 제곱을 해야 한다.

        벡터의 거리를 제곱하는 함수로는 math.lengthsq 가 있다.

         

        public float VisionMaxDistance = 5.0f;
        
        public partial class SampleSystem : SystemBase
        {
        	 
             protected override void OnUpdate()
             {
               .. 코드 생략..
                var distancesq = math.distancesq(EntityAspect.transform.position, PlayerAspect.transform.position);
                if(math.lengthsq(VisionMaxDistance) < distancesq)
                {
                    // distancesq 의 값이 거리의 제곱을 반환한다.
                    // 비교할 거리 VisionMaxDistance 도 제곱한 값이 되어야 한다.
                    // math.lengthsq 는 전달받은 백터의 길이를 제곱한 값을 반환한다.
                }
             }
        }

         

        저작자표시 비영리 변경금지 (새창열림)

        'Unity DOTS > TIP' 카테고리의 다른 글

        UNITY DOTS - JobHandle.CombineDependencies  (0) 2022.11.29
        UNITY DOTS - Unity.Mathematics.Random 랜덤 사용하기  (0) 2022.11.28
        Unity DOTS(ECS) 에서 Build 하는 방법  (1) 2022.08.09
        Unity DOTS(ECS)에선 꼭 Enter Play Mode Options를 활성화하자  (0) 2022.08.09
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바