- Unity DOTS(ECS)에서 따라다니는 카메라 만들기2022년 08월 09일
- 개양반
- 작성자
- 2022.08.09.:41
Player(Entity)를 따라다니는 Camera(GameObject)을 만들려고 Camera를 ConvertToEntity로 변환시키면 카메라 랜더링이 없다는 검정화면을 보게 된다.
Camera Rendering이 Entity 로 전환되면 먹통이 되어서 생기는 문제다. 즉, 카메라는 항상 GameObject로 존재해야 한다. 그러므로 MonoBehaviour 에서 Player(Entity)의 위치 정보를 읽어서 카메라가 따라다니게 만들어야 한다.
MonoBehaviour 에서 Player(Entity)를 읽어오는 방법은 여러가지가 있다. 그 중 GetSingletonEntity로 읽어오는 방법에 대해 다루겠다.
using Unity.Entities; using Unity.Mathematics; using Unity.Transforms; using UnityEngine; public class CameraFollow : MonoBehaviour { public float3 offset; public float3 min; public float3 max; private Entity Player; EntityManager entityManager; private void Awake() { entityManager = World.DefaultGameObjectInjectionWorld.EntityManager; } private void Start() { EntityQuery query = entityManager.CreateEntityQuery(typeof(PlayerTag)); Player = query.GetSingletonEntity(); } void LateUpdate() { if (entityManager == null || Player == null) { return; } Translation entPos = entityManager.GetComponentData<Translation>(Player); transform.position = entPos.Value + offset; } }
#코드 설명
Player Query를 만들려면 EntityManager가 필요하고 EntityManager를 사용하려면 어느 World에 속한 EntityManager를 사용할 것인지 먼저 명시해야 한다. GetSingletonEntity는 딱 1개만 존재하는 Entity의 경우 사용할 수 있다. 0개 이거나 2개이상이면 에러를 발생한다.
'Unity DOTS > TIP' 카테고리의 다른 글
UNITY DOTS - Unity.Mathematics.Random 랜덤 사용하기 (0) 2022.11.28 UNITY DOTS - 거리 계산하기 (0) 2022.11.25 Unity DOTS(ECS) 에서 Build 하는 방법 (1) 2022.08.09 Unity DOTS(ECS)에선 꼭 Enter Play Mode Options를 활성화하자 (0) 2022.08.09 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)