본문 바로가기

유니티

(76)
[유니티] Line Renderer 로 움직이는 오브젝트를 연결하기 [Line Renderer] [Line Renderer] Line Renderer 컴포넌트는 3D 공간에서 두 개 이상의 지점 배열을 가져와 각각의 점 사이에 직선을 그리는 컴포넌트이다. 해당 라인 렌더러를 사용하여 움직이는 물체 사이를 이으려고 한다. [Positions] =>라인 렌더러 컴포넌트에는 positions 배열이 존재하는데 선을 이으는 점의 Vector3 배열이다. 해당 값의 0(시작) 과 1(끝)에 움직이는 오브젝트의 위치를 넣어 연결되는 선을 만드려 한다. [Use World Position] =>활성화하면 포인트가 월드 공간 좌표로 간주된다. 비활성화하면 이 컴포넌트가 연결된 게임 오브젝트의 트랜스폼에 속한다 [연결하기] [문제점] =>두 움직이는 오브젝트를 연결하려 Line Rend..
[Behavior Designer] 09 . 변수 [shared variable] [shared variable의 필요성] =>BT의 장점은 Task 간의 연결이 느슨하여 유연하다는 점이다.즉 , 하나의 Task는 다른 Task에 의존하지 않는다. 그러나 정보를 공유하는 작업이 필요할때가 있다 . 기존의 Behavior Tree는 Black Board를 활용하여 이 문제를 해결 했지만 Behavior Manager 에셋은 shared variable(공유 변수)를 통해 해당 문제를 해결하였다. [shared variable] public SharedTransform target; =>앞서 시야각 안에 있는 대상을 쫒는 BT에서 공유 변수를 선언했다. =>해당 변수의 선언으로 Behavior Designer에서 변수를 생성하고 적용할 수 있다. =>이제 ..
[Behavior Designer] 08 . 디버깅 [디버깅] [디버깅] =>BT가 실행중일때 Task는 회색 (실행 안됨) / 녹색 (실행중) 사이에서 색상이 변경되는 것을 볼 수 있다. Task가 실행후 Success를 반환한다면 체크를 , Failure를 반환한다면 x가 표시된다. =>작업의 실행 도중 인스펙터 내에서 변경이 가능하고 실시간으로 게임에 반영된다. [중단점] =>Task 우클릭 - Set Breakpoint는 해당 Task 에 중단점을 실행한다 . 해당 Task에 들어섰을때 유니티를 일시 정지한다. 특정 작업이 언제 실행되는지 알 수 있다. [감시변수] =>Inspector에서 변수 옆 돋보기를 누른다면 , 그래프 내에서 변수의 변화를 캐치 할 수 있다. [작업 비활성화] =>특정 Task에만 집중하고자 할 때 Task 상단 노란 버튼..
[Behavior Designer] 07 . 시야각에 있다면 쫓아가는 BT 조건 (Conditional)을 충족한다면 행동(Action)을 하는 BT를 만들어 본다 . 해당 BT는 Conditional Task / Action Task 두가지 파트로 나뉜다.유튜브에 튜토리얼이 친절하게 올라와 있으니 참고. [CONDITIONAL TASK] [CONDITIONAL TASK] Conditional Task는 상태를 확인만 한다 . WIthInSight는 시야각 내부에 대상이 있는지에 대한 상태를 확인 할 것이다. using UnityEngine; using BehaviorDesigner.Runtime; using BehaviorDesigner.Runtime.Tasks; public class WithinSight : Conditional { // How wide of an angl..
[Behavior Designer] 06 . PARENT TASKS [PARENT TASKS] [PARENT TASKS] =>Parent Task는 Composite / Decorater Task를 말한다. // 상위 작업이 가질 수 있는 최대 자식 수입니다. 일반적으로 1 또는 int입니다. public virtual int MaxChildren(); // 현재 작업이 병렬 작업인지 확인하는 부울 값입니다 public virtual bool CanRunParallelChildren(); //현재 활성 자식의 인덱스입니다. public virtual int CurrentChildIndex(); // 현재 작업을 실행할 수 있는지 여부를 결정하는 bool 값입니다. public virtual bool CanExecute(); // 실행된 상태에 데코레이터를 적용합니다 pu..
[Behavior Designer] 05 . TASKS [TASKS] [TASKS] BT는 Task의 모음이다 . Task는 Unity의 MonoBehavior와 비슷한 API가 있다.Task class는 해당 API를 가지고 있다. //비헤이비어 트리가 활성화되면 OnAwake가 한 번 호출됩니다. 그것을 생성자로 생각하십시오. void OnAwake(); // OnStart는 실행 직전에 호출됩니다. 이전 실행에서 재설정해야 하는 변수를 설정하는 데 사용됩니다. void OnStart(); // OnUpdate는 실제 작업을 실행합니다 TaskStatus OnUpdate(); // OnFixedUpdate는 FixedUpdate 루프 중에 실행됩니다. TaskStatus는 OnUpdate 내에서 반환되어야 합니다 void OnFixedUpdate(); /..
[Behavior Designer] 04 . Behavior Manager [Behavior Manager] [Behavior Manager] BT가 동작할때 , Behavior Manager가 있지 않다면 새로 생성한다. 해당 매니저는 씬에 있는 모든 BT의 실행을 관리 할 것이다 . [컴포넌트 옵션] Update Interval =>얼마나 자주 BT가 Tick 할 지는 Update Interval 옵션을 조정함으로 정할 수 있다. “Every Frame” 은 업데이트 루프에서 매 프레임 BT가 Tick 할 것이다. “Specify Seconds”는 특정 시간에 Tick 하게 할 것이다. “Manual” 은 언제 BT가 Tick 할지에 대한 컨트롤을 사용자에게 부여한다. 해당 메서드의 호출로 Tick이 가능하다. BehaviorManager.instance.Tick(); 또한..
[Behavior Designer] 03 . Behavior Tree Component [Behavior Tree Component] [Behavior Tree Component] 해당 컴포넌트는 Behavior를 저장하고 , Behavior Designer와 Task 간의 인터페이스 역할을 수행한다. 해당 API로 BT를 시작하고 멈출 수 있다. public void EnableBehavior(); // pause: temporarily stop the behavior tree at its current execution point. //It can be resumed with EnableBehavior. public void DisableBehavior(bool pause = false); 해당 메서드는 Task를 찾을 수 있다. TaskType FindTask(); List FindT..