본문 바로가기

전체 글

(32)
[Unity3D]FSM을 활용한 AI개발(6) 1. 서론 상태 값들을 다 다루고 싶지만, 네비 메쉬를 사용하는 Walk부분 만 다루고 이번 ~만들기는 끝을 내도록 하려고 합니다. 이 정도면 유니티를 이용해 FSM을 제작 할 수 있겠다 생각이 들었습니다. 댓글로 궁금한점 물어봐 주시면 제가 아는 한 최대한 답 드리겠다고 약속드리며, 시작해 보도록 하겠습니다. 2. 본론 Walk 상태에 들어가려면, 오브젝트는 어떻게 움직여야 좋을까. 장애물도 피하고, 해당 목적지(타깃)까지 이동을 해야 할 필요가 있다. 그중 가장 간편한 것은 Nav Mesh를 이용하는 것이다. Transform.Translate을 활용하는 법도 있겠지만, 장애물을 피하는 알고리즘이 따로 필요할 것이기에 간편한 NavMesh를 활용해 보도록 하겠다. 그림 2, 그림 3을 참고해서 베이크..
[Unity3D]FSM을 활용한 AI개발(5) 1. 서론 이 글에서는 좀비가 어떤 상태 값을 가져야 하는지 알아보도록 하겠다. 거두절미하고 바로 알아보자. 사실할 말이 없다. 2. 본론 좀비는 우리가 배열로 정의했던 것만큼의 클래스(상태)들이 필요하다. 걷고, 뛰고, 공격하고, 죽고. 가장 먼저 우리는 IDLE상태값부터 보도록 하자. 보기 전에 첫 번째로, 상속 부분을 확인해야 한다. 추상 클래스 FSM 를 상속받은 Zombie_Idle는 전에 강제했던 Begin(), Run(), Exit()를 구현하지 않았기 때문에 이런 컴파일 결과를 내어준다. 너무 친절하니 좋다. 우리는 전구를 클릭해 자동생성을 하면 된다. 가주 간편하다. 알아서 abstract로 강제한 추상클래스를 override 된 함수로 전부 다 구현해 주니 말이다. 이게 상속의 장점이자..
[Unity3D]FSM을 활용한 AI개발(4) 1. 서론 FSM이 오브젝트에 붙어 머신을 동작시키고 각 State를 어떻게 관리하는지 알아볼 것이다. 우선 첫 번째로 우리는 이 오브젝트가 어떤 상태 값을 가질 것인지, 어떤 데이터가 필요한 지부터 알아보자. 2. 본론 //ZombieFSM.cs public class ZombieFSM : MonoBehaviour { //머신에 들어갈 스테이트 public Head_Machine m_state; //좀비가 미리 가지고 있을 스테이트 public FSM[] m_arrState = new FSM[(int)ZOMBIE_STATE.END]; //좀비가 다른 오브젝트를 찾을 범위 public float m_fFindRange; //좀비가 찾은 타겟 public Transform m_TransTarget; //좀..
대전 소제동 수플레 맛집 카페 '볕' 1. 서론 우연찮게 들어간 카페, 이 곳은 슈니첼 바로 옆에 있다 이 말이야... 차에까지 타고 소제동에 또 카페 몇 군데 있던데~ 하면서 찾았더니 바로 앞이더라. 2. 본론 분위기는 별 다를 것 없이 낡은 고택을 인테리어 한 카페였다. 공기도 분위기도 죄다 차분한 상태에서 커피를 마실 수 있다. 카페에 특별한 메뉴가 있는데 수플레였다. 플레인, 바나나, 과일들이 있는데 필자는 플레인을 택했다. 제일 저렴하기도 하고.... 제일 맛있을 것 같았다. 시간이 오~~~ 래 걸린다는 건 단점... 굽는데 시간이 걸리니 그럴 만도 하다;; 폭신하고 부드러운 수플레 위에 차가운 버터가 올라가 있는데, 칼로 나누어 수플레랑 같이 먹으면 정말 맛있다. 입자가 큰 소금과 고운 설탕들이 올라가 있는데, 살짝 짭짤하고 달달..
대전 소제동 슈니첼 맛집 '슈니첼' 1. 서론 백종원의 골목식당에서 돈스파이크님이 만드셨다고 화제가 되었다고 하더군요. 골목식당 보는데 왜 몰랐지? 대전 소제동 맛집 슈니첼..... 맛은 있다. 특별한 음식을 찾는다면 한 번쯤 찾아가도 괜찮을 것 같다 주차장은 따로 없네요. 사람이 많아 내부 인테리어는 많이 못 찍었는데 옛 건물을 확장하여 이쁘게 꾸며 놓은 셨다. (아... 비밀정원 컨셉이었군요, 근데 사진엔 정원이 안 담겼군요... 이런 세상에....) 2. 본론 음식 맛 가격에 비해 굴라시 안에 고기양이 매우 아쉽다. 고기를 얇게 펴 튀기고 곁들여 나오는 감자에 허니버터 소스를 끼얹으셨는데, 슈니첼과 따로 담겨 나오면 좋을 것 같다. 옆에 딸기잼과 크림소스가 나오는데 이 허니버터 향이 맛을 다 가져가 버리더라... 딸기잼과 먹는 돈까스..
[Unity3D]FSM을 활용한 AI개발(3) 1. 서론 우선 체크해야 할 일은 좀비, 군인, 시민은 모두 다 같은 형태 일 것을 파악하고 있어야 한다. 우리는 그래서 추상 키워드와 제너릭 키워드를 사용해야 하고 알아야 할 필요가 있다. 추상 키워드와 제너릭 키워드는 다른 글에 설명을 쓰도록 하겠다. 2. 본론 //FSM.cs namespace MyFSM { abstract public class FSM { abstract public void Begin(); abstract public void Run(); abstract public void Exit(); } } 각 상태들이 상속받을 FSM추상 클래스를 만든다. 이렇게 밑 작업을 해두면 계속해서 상태들을 만들어 내는데 실수도 덜고 작업 속도가 조금 향상될 수 있다고 믿는다. Begin() 함수에..
[Unity3D]FSM을 활용한 AI개발(2) 1. 서론 FSM이라고 검색하면 제일 눈에 띄는 사진과 설명이다. 실제로 FSM이 날아다니는 스파게티 몬스터라고 생각하지 않길 바랍니다... 유한 상태 기계 FSM(finite-state machine) 쉽게 말해 상태의 값들을 유한적으로 바꿔주는 기계다. 흔히 알고 있는 단순한 AI를 구현하기에 가장 적합한 모델? 인 것이다. 우리는 이를 통해 단순한 AI의 상태들을 바꿔보며 간단한 AI를 재조립할 예정이다. 구조의 흐름을 간단하게 짜 보도록 하자. 2. 본론 세 가지의 역할을 나누어 보도록 하겠다. 필자는 좀비와 시민, 군인을 에셋스토어와 팀 디자이너로부터 받았다. 1. 좀비는 시민과 군인을 공격하고 2. 시민은 좀비를 피해 도망가고 3. 군인은 좀비를 공격한다. 각 캐릭터들의 특징과 행동할 애니메이..
[Unity3D]FSM을 활용한 AI개발(1) 위에 영상에 나오는 AI를 구현하는 방법을 알아보도록 하겠습니다.