Unity DOTS/따라하며 배우기8 UNITY DOTS - State Machine(상태 머신) 만들기 #6 색상 변경 오늘 알아볼 내용 Guard의 상태(순찰, 대기, 추격)에 따라 Material이 변경되는 방법에 대해 다룹니다. Component 1. GuardAuthoring.cs 수정 색상이 변경되어야 할때 추가할 IsInTransitionTag를 GuardAuthoring.cs에 추가합니다. public struct IsInTransitionTag : IComponentData { } 2. MaterialSingletonAuthoring.cs 작성 MaterialSingletonAuthoring.cs 파일을 만들고 아래의 코드를 작성합니다. using Unity.Entities; using Unity.Mathematics; using UnityEngine; class StateTransitionMaterials.. Unity DOTS/따라하며 배우기 2022. 8. 8. UNITY DOTS - State Machine(상태 머신) 만들기 #5 Guard 추격 오늘 알아볼 내용 Guard의 탐색 범위에 Player가 존재하면 추격상태로 변경하고 탐색범위 밖으로 도망가면 Idle 상태로 변경하는 것에 대해 다룹니다. 범위를 탐색하기 1. Authoring Guard의 탐색범위를 저장할 ComponentData가 필요하다. GuardAuthoring.cs 에 아래의 코드를 추가한다. public struct VisionCone : IComponentData { public float AngleRadians; public float ViewDistanceSq; } 위에서 만든 ComponentData를 GuardAuthoring class의 전역변수로 추가한다. // 탐색 범위와 거리 public float VisionAngleDegrees = 45.0f; publ.. Unity DOTS/따라하며 배우기 2022. 8. 7. UNITY DOTS - State Machine(상태 머신) 만들기 #4 Guard 순찰 오늘 알아볼 내용 Guard가 목적지에 도착하면 Idle 상태가 되고 CoolTime 동안 대기를 한 뒤에 다음 목적지로 이동하는 순찰을 구현할 예정입니다. Idle 상태 만들기 1. ComponentData 추가 Idle 상태가 되면 Guard에게 얼마동안 휴식을 취했는지 저장하는 IdleTimer Data를 추가합니다. GuardAuthoring.cs에 아래의 코드를 추가합니다. public struct IdleTimer : IComponentData { public float Value; } 2. GuardAIUtility Idle 상태가 되면 IdleTimer를 Guard에 추가하는 기능을 만듭니다. 아래의 코드를 GuardAIUtility.cs에 추가합니다. /// /// Idle 상태로 변경 .. Unity DOTS/따라하며 배우기 2022. 8. 7. UNITY DOTS - State Machine(상태 머신) 만들기 #3 Guard 이동 오늘 알아볼 내용 두 개의 Waypoints를 설치합니다. Guard가 Entity로 전환될 때 Waypoint 1개를 목적지로 설정하고 해당 목적지로 이동하는 것에 대해 다룹니다. GuardAIUtility Guard 의 여러 행동들을 설정할 때 사용할 예정인 GuardAIUtility.cs 파일 생성하고 아래의 코드를 작성합니다. public class GuardAIUtility { public const float kStopDistanceSq = 0.4f; } #코드 설명 목적지에 도달했다고 판단하는 거리입니다. 목적지와 Guard의 현재위치의 거리가 kStopDistanceSq보다 작아지면 도착했다고 판단합니다. Data Waypoints 와 현재 이동해야 하는 위치를 저장해야 합니다. 아래의 코.. Unity DOTS/따라하며 배우기 2022. 8. 6. UNITY DOTS - State Machine(상태 머신) 만들기 #2 Player 오늘 알아볼 내용 WSAD로 Player를 이동시키는 기능을 구현한다. (오늘은 매우 심플하다!) 사용자 입력에 따라 방향값 받아오기 ASDW 또는 상하좌우 방향키 입력에 따라 Player가 이동해야 하는 방향값(x,y)을 설정하는 기능을 구현할 예정이다. 아래 코드를 작성한다. using Unity.Entities; using Unity.Jobs; using Unity.Mathematics; using UnityEngine; struct UserInputData : IComponentData { public float2 Move; } public partial class GetherInputSystem : SystemBase { protected override void OnUpdate() { var .. Unity DOTS/따라하며 배우기 2022. 8. 5. UNITY DOTS - State Machine(상태 머신) 만들기 #1 개요 EntityComponentSystemSamples의 State Machine 만들기를 분석하는 글이다. 샘플프로젝트는 https://github.com/Unity-Technologies/EntityComponentSystemSamples 로 가면 다운받을 수 있다. 게임 진행방식 Guard는 Waypoint를 순찰한다. Waypoint에 도착하면 잠시 대기를 하고 다음 Waypoint로 이동하는 것을 반복한다. 순찰 중에 원뿔 범위 내에 Player가 존재하면 추격하고 원뿔 범위 밖으로 Player가 도망치면 잠시 대기하다가 다시 Waypoints를 순찰하는 간단한 게임이다. 해당 샘플로 알 수 있는 것들 1. Unity DOTS 에서 조건에 따라 상태가 변경되는 State Machine을 만드는 방법.. Unity DOTS/따라하며 배우기 2022. 8. 5. UNITY DOTS - BlobAsset 예제2 Waypoint 지난 글 다시보기 [Unity DOTS/따라하며 배우기] - UNITY DOTS - BlobAsset 예제1 뒤끝서버에서 데이터 받아와서 처리 BlobAsset은 공유데이터(다수 Entity에서 읽어와서 쓰는 데이터)에 최적화된 타입이다. 공유데이터는 구조체로 만들어서 사용하는 방법보다 BlobAsset 으로 만들어서 사용하는 것이 좋다. 그러니깐, 여러 Entity에서 공유해서 사용하는 데이터는 BlobAsset로 만들어서 사용하는 것이 좋다. 오늘 알아볼 내용 3개의Waypoint를 만들어서 BlobAsset으로 만들고 소환되는 Player Entity에게 연결해서 waypoint를 따라 다니는 간단한 프로그램을 만들 것이다. Blob Asset 구조 만들기 BlobAsset으로 만들 Data와 Bl.. Unity DOTS/따라하며 배우기 2022. 8. 4. 이전 1 2 다음 💲 추천 글