본문 바로가기

Unity

(11)
[Unity3D] [C#]Delegate 응용, 쉽게 사용 좀 해보자 1. 서론 뭐 대리인이네 콜백이네 체인이네 하는 '수학의 정석' 제일 앞장 집합 같은 소리는 집어치우고 딱 한마디로 코드 덩어리(함수)를 값 대신 사용한다고 보면 쉽다. c++ 에선 함수 포인터와 비슷하다고 볼 수도 있겠다. 이 둘은 비슷하지만 분명히 다른 점이 있을 거라 본다. 아직 필자는 자세히 공부를 안 해봐서 모르겠다. 곧 알게 되면 다시 기록하도록 하겠다. 2. 본론 필자는 버튼을 눌렀을 때 물건을 샀으면 좋겠는 기능이 필요했다. 헌데, 여러 가지 조건들이 추가되니 너무 코드가 보기도 싫고 이곳저곳의 객체를 가져와야 하는 상황이 생겨버렸다. 그래서 델리게이트를 사용해보고자 했다. //GlobalEvent.cpp using Global; using System; using UnityEngine; ..
[Unity3D]Singleton 패턴 인터페이스로 써보기 1. 서론 본 글은 Interface의 이해와 제너릭클래스(템플릿)에 대한 이해가 필요하므로 구체적인 설명이 들어갈 수도, 없을 수 도 있으니, 양해 부탁드립니다. 간단히 코드만 넣어 활용방법만 설명 하려 했으나 말이 길어져 설명을 할수도 있을겁니다.ㅋㅋㅋ 필자는 매번 매니저를 만들때마다 유니티에서 Awake부분에 생성하고 static걸고 하는게 귀찮았습니다. 그리고 개발자가 죄다 중구난방으로 개발하는 꼴이 보기 싫었습니다. 그래서 그냥 제가 이걸로 쓰라고 만들었습니다. 이 방식이 효율적일 수도 있고, 비 효율적일 수 도있으나, 참고정도로만 봐 주시고, 이렇게도 쓰는 놈이 있구나 정도로만 생각 해주시면 감사하겠습니다. 아무쪼록 악플 달지말란 소리 2. 본론 그냥 저는 사용법이 얼마나 간단한지에 대해 먼저..
[Unity3D]JoyStick(D pad)캐릭터 이동 컨트롤러 제작(마무리) 1. 서론 없다. 바로 본론을 보자. 이전 글은 아래에... https://s-sense.tistory.com/16 [Unity3D]JoyStick(D pad)캐릭터 이동 컨트롤러 제작(1) 1. 서론 오랜만에 유니티 작업으로 찾아왔다. 거의 세 달 만 인 것 같은데... 블로그에 어떤 자료를 올릴까 고민이 많았다. 필자는 전부 다 테스트하고 정말 쓸만 한것들만 올리자는 명목 하에 블로그를 개설한 것.. s-sense.tistory.com 2. 본론 코드가 너무 길다. 중간중간 주석처리를 해놓았고, 자세한 설명은 아래를 확인하길 바란다. Controller.cs using System.Collections; using System.Collections.Generic; using UnityEngine; u..
[Unity3D]JoyStick(D pad)캐릭터 이동 컨트롤러 제작(1) 1. 서론 오랜만에 유니티 작업으로 찾아왔다. 거의 세 달 만 인 것 같은데... 블로그에 어떤 자료를 올릴까 고민이 많았다. 필자는 전부 다 테스트하고 정말 쓸만 한것들만 올리자는 명목 하에 블로그를 개설한 것이기에... 방대한 자료들 중에서 쓸만한 정보, 정확한 정보를 나누고 싶었고, 기록하고 싶었다. 기다린 사람은 없겠지만... 아무튼 바로 보자. 조이스틱 혹은 디-패드 라고 불리고 모바일 게임에서 흔히 보이는 이러한 십자 혹은 동그란 모양을 보았을 것이다. 모바일 게임에서 흔히 보이는 조작 방식인 것이다. 우리는 이것을 어떻게 하면 효율적으로 구현할 수 있을지에 대해 생각하고 필자의 코드를 판가름해주길 바란다. 조이스틱을 화면에 띄워두는 일반적인 방법도 있겠지만, 개인적으로 좁디좁은 화면에 조이스..
[Unity3D]FSM을 활용한 AI개발(마무리) 1. 서론 코드는 직접 타이핑하고 직접 만들어 보는 게 최고입니다. 그럼에도 제가 코드를 올려놓는 이유는 그래도 어떻게 해야 하는지 감이 안 잡히는 분들은 복사해서 분석하시라고 올려놓는 겁니다. 많이 부족합니다. 양해 부탁드리며, 좋은 취지로 올리는 것이니 너무 뭐라 하지 말아 주시면 감사하겠습니다. 2. 본론 FSM.cs ...더보기 FSM.cs using System.Collections; using System.Collections.Generic; using UnityEngine; namespace MyFSM { abstract public class FSM { private readonly T m_Owner; abstract public void Begin(); abstract public voi..
[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; //좀..