- [ 카테고리 없음 ]유니티 게임 개발 NavMesh2023-09-21 23:09:393D 공간을 평면으로 분할하고 각각의 평면을 네비게이션 셀이라고 부르는 다각형 형태로 나타냄. 이를 통해 캐릭터들이 이동 가능하거나 불가능한 지역을 정의하고 이를 기반으로 이동 경로를 계산할 수 있음. using UnityEngine; using UnityEngine.AI; public class CharacterMovement : MonoBehaviour { public Transform target; // 목적지로 이동할 위치 private NavMeshAgent navMeshAgent; // NavMeshAgent 컴포넌트 void Start() { navMeshAgent = GetComponent(); if (navMeshAgent == null) { Debug.LogError("No NavMes..
- [ 카테고리 없음 ]유니티 게임 개발 IPointerClickHandler2023-09-20 21:14:51유니티에서 마우스 클릭 이벤트를 처리할 때 다양한 방법이 있음. 그 중 Input.GetMouseButtonDown과 개인 프로젝트에서 사용한 IPointerClickHandler의 차이를 알아보았음. Input.GetMouseButtonDown은 직접 코드에서 마우스 클릭 이벤트를 감지하고 처리하는 방법임. 예를 들어 게임 오브젝트를 클릭했을 때 특정 동작을 수행하거나, 마우스를 사용하여 게임 내 동작을 제어할 때 유용함. if (Input.GetMouseButtonDown(0)) // 0은 왼쪽 마우스 버튼을 나타냅니다. { // 마우스 왼쪽 버튼이 클릭될 때 실행할 코드 } IPointerClickHandler는 UI 요소(버튼, 패널)에서 클릭 이벤트를 처리하기 위한 인터페이스임. UI 요소에 이..
- [ 카테고리 없음 ]유니티 게임 개발 숙련 #22023-09-20 20:55:25개요 개인 프로젝트인 RPG 플레이어 스탯 및 인벤토리 시스템의 기본적인 부분들을 완성하였음. 실제로 스크립터블 오브젝트 개념을 특히 아이템 쪽에 적용하여 활용해보았는데 이 기능의 확정성, 편의성 측면의 장점을 체감하였음. 현재 가장 큰 문제점은 플레이어 스크립터블 오브젝트에 직접적으로 아이템 장착/장착 해제 수치가 반영되기 때문에 고정되어 있는 플레이어 스크립터블 오브젝트를 리셋시키는 기능이 필요함. 플레이어 스탯 플레이어 스크립터블 오브젝트 클래스인 PlayerSO는 플레이어의 정보 속성들을 가지고 있음. using UnityEngine; [CreateAssetMenu(fileName = "Player Info", menuName = "SO/Player")] public class PlayerSO :..
- [ 카테고리 없음 ]유니티 게임 개발 숙련 #12023-09-18 21:25:55Scripatble Object 데이터를 저장하고 관리하기 위한 도구로, 프로젝트 내에서 게임 오브젝트와 독립적인 에셋으로 데이터를 저장하고, 에디터에서 데이터를 쉽게 수정하고 생성할 수 있게 하는 특징을 가지고 있음. using UnityEngine; [CreateAssetMenu(fileName = "NewItem", menuName = "MyGame/Item")] public class ItemData : ScriptableObject { public string itemName; public int itemID; public Sprite itemIcon; public int itemValue; } 위 코드는 아이템 데이터를 저장하는 Scriptable Object의 에시임. [CreateAsset..
- [ 카테고리 없음 ]유니티 델리게이트&이벤트2023-09-15 20:55:14게임에서 플레이어와 몬스터를 소환하는 기능을 만들고 싶을 때, 보통 다음과 같은 메서드를 만들고 호출함. SpawnPlayer(); SpawnMonster(); 이때 SpawnPlayer(); 메서드를 예를 들면 플레이어를 다양한 위치에 생성하고 싶을 수 있음. 즉, 하나의 동작에 다음과 같이 여러가지 상황이 부여될 수 있다는 것임. SpawnPlayer_ARoom(); SpawnPlayer_BRoom(); SpawnPlayer_RandomPlace(); 이때, 변수처럼 하나의 로직에서 다른 값으로 사용할 수 있게 할 수 있게하는 개념을 메서드에 적용할 수 있게 하는 것이 델리게이트임. 메서드를 변수처럼 만들어두고 할당한 기능이 작동하게 해주는 것임. 델리게이트의 기본 구조는 다음과 같음. delegat..
- [ 카테고리 없음 ]유니티 게임개발 입문 #92023-09-14 20:44:31유틸리티 UI 테스트하면서 느낀 불편함을 해소하기 위해 다음과 같은 몇가지 UI를 추가함. 게임 도중 일시정지 하고 재시작 혹은 홈으로 나갈 수 있는 퍼즈 버튼과 스테이지에서 시작 화면으로 이동할 수 있는 뒤로가기 버튼 등이 있음. //UIPauseCanvas.cs public class UIPauseCanvas : MonoBehaviour { [SerializeField] private Button _pauseBtn; [SerializeField] private Button _closeBtn; [SerializeField] private Button _homeBtn; [SerializeField] private Button _retryBtn; [SerializeField] private GameObje..
- [ 카테고리 없음 ]유니티 게임개발 입문 #82023-09-13 21:23:11버그 수정 파티클 시스템과 플레이어 충돌 버그는 그리드 수정 시 프리팹화 문제로 인해서 작동하지 않을걸 다시 수정하여 해결. 체력아이템이 중첩되는 버그는 일정 체력 이하일때만 아이템이 적용되는 방식으로 수정하여 해결. 엔딩 씬 엔딩 씬은 절망적인 엔딩상황의 느낌을 극대화하기 위해 3D로 작업을 하기로 하였음. 블렌더에서 지구를 잘게 잘라 fbx로 유니티로 로드하여 각 조각에 rigidbody와 mesh collider을 넣어 지구 파괴 효과를 구현하였음. 테스트를 위해서 충돌 파워, 충돌을 일으킨 오브젝트의 파괴 등 다양한 기능을 스크립트에 넣었고 충돌 시 사운드와 파티클 시스템이 재생됨. 팀원분이 만든 다른 방식의 엔딩씬과 합치는 작업을 진행하였음. using UnityEngine; public cla..
- [ 카테고리 없음 ]유니티 게임개발 입문 #72023-09-12 22:20:19플레이어 HP 및 운석 충돌 시스템 플레이어와 운석 파편 충돌 시스템을 구현하였음. 운석 파편은 파티클 시스템이여서 기존 오브젝트간 충돌과 조금 방식이 달랐음. OnParticleCollision 메서드를 사용하였으며 추후에 파티클의 파티클 충돌효과를 추가할 예정임. HP같은 경우 기존 하트들을 UI요소로서 Image 배열로 처음 제작하였음. 하지만 기존 UIManager과의 사용이 개인적으로 까다로웠음. PlayerHealth에서 GameManager에서 호출하고 다시 Stage에서 호출하는 방식으로 프리팹화된 하트 UI를 불러와야하는 전체적인 과정에서 접근 부분에서 오류가 발생함. 그래서 하트 이미지를 스프라이트렌더러 배열로 바꿔 플레이어의 자식 오브젝트로 넣어주는 것으로 타협을 했음. 추가로 난이도..