목록Unity (11)
DOTY

이번에 진행할 프로젝트에 오브젝트를 엄청 많이 소환하기 위해서 ECS를 공부하고자 한다.유니티에서는 DOTS 기술 중 하나로 소개가 되어있고 유튜브에서는 Job System도 함께 소개를 했다.https://www.youtube.com/watch?v=WLfhUKp2gagUnity 공식 유튜브 채널에 소개되어있어 이를 보고 혼자서 깔짝깔짝 해볼 예정.ECS (Entity Component System) ?Entity고유 식별자 ID데이터를 보유하지 않고 컴포넌트를 결합하여 정의Component순수 데이터MonoBehavior 기반 컴포넌트와는 다른 방식을 사용.MonoBehavior은 데이터와 동작을 함께 사용하는데 목적이 있다면 ECS의 Component는 순수한 데이터만을 위한다using Unity.E..

머신러닝을 위한 가상환경 구축1. Python + Miniconda파이썬과 아나콘다를 사용해서 구축한다. (나는 미니콘다를 썼다)Python Release Python 3.10.11 | Python.org Python Release Python 3.10.11The official home of the Python Programming Languagewww.python.orgMiniconda — Anaconda documentation Miniconda — Anaconda documentationThese three commands quickly and quietly download the latest 64-bit Windows installer, rename it to a shorter file name..
AI의 트리 Node : Success, Failure, Running에 따라서 노드 상태 결정Action : 어떤 동작Sequence : 일의 순서. 만약 자식이 하나라도 실패하면 실패로 반환Selector : 일의 선택. 만약 어떤 자식이 하나라도 성공하면 성공으로 반환네 가지를 구현해보자. 구현할 내용들1. Node - InterfaceNodeState를 enum 형태로 선언Node에서 필요한 것은 진행 : Running, 성공 : Success, 실패 : Failure 가 필요하다.Node클래스는 세가지의 노드들에 대해서 각자 평가하는 함수 - Evaluate()가 존재.이 함수는 Tree형태로 되어있고 각 원하는 동작에 대한 Behavior Tree를 설계할 때 이 Tree의 Root로 정해준다..
요약하면, HSV를 활용하면 된다. Hue (색)Saturation (채도)Value (명도)세가지 요소 중, Hue를 활용하면 된다.초록색은 0.3, 빨간색은 0 이기 때문에 다음처럼 코드를 활용할 수 있다.image.color = Color.HSVToRGB(image.fillAmount / 3, 1.0f, 1.0f);

public gameManager Player; 이런식으로 딸랑 서놓기만 한 경우에 생긴 오류였다. 반드시 스크립트를 확인해서 칸에 참조할 스크립트를 넣어주도록하자.. 이 오류 고치느라 한시간 반을 삽질했다..

SceneManagement Scene의 이름을 알아낼 때 사용된다. SceneManager.GetActiveScene().name Scene을 변경하는데도 사용된다. Numbering된 Scene을 불러오는 방법(1)과 Scene의 이름을 직접하는 방법(2)이 있다. ☞ SampleScene에서 Inside로 변경 먼저 File -> Build Settings에 들어가서 Scene 변경을 하고싶은 모든 Scene을 Scenes In Build에 넣어둔다. 넣은 후에는 그냥 창 닫으면 되는듯 하다. How to... using UnityEngine.SceneManagement; // 추가해줄것. void Update() { SceneManager.LoadScene(1); // (1) SceneManage..

OnTriggerEnter(Exit)2D private void OnTriggerEnter2D(Collider2D other) 다른 물체가 트리거에 들어왔을 경우 함수가 호출된다. 그냥 어떤 물체가 들어오든 발동되도록 할 수 있지만 특정 물체가 닿았을 때 트리거가 작동하도록 할수도 있다. Event를 발생시킬 프롭에 Collider를 넣어주고 Is Trigger에 체크한다. (그럼 다른 물체들이 그냥 지나칠 수 있다.) private void OnTriggerEnter2D(Collsion2D other) { if(other.CompareTag("Player") { playerIsEnter = true; } } Tag가 Player인 경우에만 Trigger에 들어올 때 이벤트가 발생한다. ※ gameObj..

Tile Palette 타일을 사용하기 위해서 모아둔 프리펩 새로운 팔레트의 이름을 정하고 Create를 하게 되면 새로운 팔레트 아이콘이 생긴다. 직접 이들을 맵에 사용하기 위해서는 Tile Map을 새로 만들어줘야한다. Gird와 함께 Tile들을 배치할 준비가 됬다. 팔레트의 세번째 아이콘을 누르고 그리드 위에 마우스를 올려두면 배치하고 싶은 타일을 넣을 수 있다. TileMap Collider TileMap의 타일들에 일일히 Collider을 줄 수 있지만 시간이 매우 오래 걸린다. 타일맵 전체에 Collider을 주게 되면 매우 편리! 따라서 Grid를 바닥, 벽, 지붕 등 다양하게 설정하여 충돌이 필요한 곳과 필요하지 않는 곳을 설정 할 수 있을 듯 하다. 배경의 TileMap의 경우에는 Z ..

Transform 모든 오브젝트들은 각각의 Transform을 가지고 있음. ( 1:1 관계 ) 따라서 유니티에서는 Transform을 만들어둠. ☞ 이미 초기화가 된 transform 변수가 포함되어있음. 사용 방법 Vector3 vec = new Vector3(0, 0, 0) translate = Translate(vec); void Start()에 담을 경우 초기화가 되며 움직일 경우 다시 vec의 값으로 자동 이동되지 않는다. Vector3 mov_vec = new Vector3(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"), 0); transform = Translate(mov_vec); void Update()에 담을 경우 오브젝트가 움직이는..

Input.[Property] Property AnyKeyDown : 아무 키나 눌렀을 때 AnyKey : 계속 누르고 있을 때 GetKeyDown : 특정 키를 눌렀을 때 GetKey : 특정 키를 계속 누르고 있을 때 GetKeyUp : 특정 키를 떼었을 때 ☞ GetKey의 경우 다음과 같이 작성한다. (Down, Up 전부 해당) Input.GetKey(KeyCode.RightArrow) ∴ Enter의 경우에는 따로 없고 이 대신에 Return을 써준다. ( Enter키 = Return ) ∴ ESC의 경우에는 Escape로 대신 써준다. ( ESC키 = Escape ) GetMouseButtonDown : 클릭을 했을 때 GetMouseButton : 클릭 중 일때 GetMouseButtonU..