유니티 95

3D FSM Player 이동, 점프, 공격 구현 (1)

FSM (유한 상태 기계) 란? 상태(state)를 기반으로 동작을 제어하는 방식을 구현하기 위한 디자인 패턴 FSM의 핵심은 단 하나의 상태만을 가진다는 점 현재 상태만 알 수 있으면 어떤 동작을 수행하려 하는지 명확히 파악할 수 있음 PlayerStateMachine 준비 1. Input Actions 생성 다음과 같이 Player Input Actions 생성 * 3D 1인칭 이동 구현 참고* https://kkln2486.tistory.com/178 3D 1인칭 이동 구현 (Input System) W/S/A/D 이동 구현 마우스 카메라 회전 구현 Space 1단 점프 구현 준비 1. Player Player 빈 오브젝트를 생성하고, 자식 오브젝트로 CameraContainer를 생성 Camera..

유니티 2023.12.22

3D 오브젝트 이동 정리

MoveTowards 목표 위치까지 등속이동 숫자와 속도가 비례 [SerializeField] private GameObject _target; void Update() { transform.position = Vector3.MoveTowards(transform.position, _target.transform.position, 5f * Time.deltaTime); // 목표 위치로 등속운동, 숫자 비례, 현재위치, 목표위치, 속도 } SmoothDamp 목표 지점 근처에서 감속하며 이동 숫자는 걸리는 시간 [SerializeField] private GameObject _target; Vector3 velo = Vector3.zero; void Update() { transform.position ..

유니티 2023.12.22

프로빌더(ProBuilder)

프로빌더란? 유니티에서 게임 개발자들이 빠르고 쉽게 3D 모델을 만들고 편집하는 도구 사용 방법 1. ProBuilder 설치 Package Manager에서 ProBuilder를 설치 후, 실행 2. Shape 추가 Plane 선택 후, 바닥 그리기 Size에서 크기 설정 드래그로 Material 추가 같은 방법으로 Cube도 만들어 줌 3. 경사 만들기 위 버튼을 누르고, 길이를 줄일 면을 선택해서 경사를 만들어 줌 4. 도형 길이 늘리기 위 두 버튼을 누르고, 면을 추가하여 도형 길이를 늘려줌 5. 중심점 가운데로 옮기기 Position Y 값을 Object Size Y 값의 1/2로 중심점을 맞춰줌 6. 도형 추가 같은 방법으로 도형 추가

유니티 2023.12.21

Input 메서드 정리

GetAxis 움직이는 동작을 구현할 때, 사용 Input.GetAxis 키보드와 조이스틱 입력값에 대해서 -1에서 1까지의 값을 가짐 수평(좌우) 입력 Input.GetAxis("Vertical") Input.GetAxis("Mouse X") 수직(상하) 입력 Input.GetAxis("Horizontal") Input.GetAxis("Mouse Y") Input.GetAxisRaw 키보드와 조이스틱 입력값에 대해서 -1, 0, 1의 값을 가짐 수평(좌우) 입력 Input.GetAxisRaw("Vertical") Input.GetAxisRaw ("Mouse X") 수직(상하) 입력 Input.GetAxisRaw("Horizontal") Input.GetAxisRaw("Mouse Y") GetButton..

유니티 2023.12.21

데미지 텍스트 효과

플레이어가 공격 시, 데미지를 표시한다. 구현 방법 1. Object 생성 DamageText 오브젝트 생성하고 자식으로 Text 빈오브젝트 생성 2. TextMeshPro - Text 컴포넌트 추가 Text 빈오브젝트에 TextMeshPro - Text 컴포넌트 추가 3. Text 위치 설정 숫자를 입력하고, 최대한 부모 오브젝트와 크기, 위치를 맞춘다. 그리고 부모 오브젝트의 Color의 A 값을 0으로 투명하게 해준다. 4. 프리팹화 DamageText 오브젝트를 프리팹화 한다. 5. 스크립트 추가 DamageText 스크립트 using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; using..

유니티 2023.12.21

인벤토리 만들기

인벤토리 만들기 1. 인벤토리 스크롤 만들기 https://kkln2486.tistory.com/180 인벤토리 스크롤 설정 (Scroll View, Grid Layout Group) Scroll View : 스크롤 기능 Grid Layout Group : 자식 오브젝트들을 일정하게 정렬 설정 방법 Scroll View 클릭 필요없는 Scrollbar는 삭제 (둘 다 삭제해도 됨) Viewport에서 Source Image는 삭제, 스크롤 방향을 체크 kkln2486.tistory.com 2. 스크립트 작성 SkillInventory using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine..

유니티 2023.12.14

AI Navigation

AI Navigation캐릭터, 몬스터, NPC 등 일정한 위치로 이동하게하는 기능유니티가 제공하는 알고리즘을 통해 길을 찾고 알아서 판단하여 목적지에 도착    설정 방법1. AI Navigation Install     2. Navigation Area 설정Walkalbe : 걸을 수 있는 구역Not Walkable : 걸을 수 없는 구역Navigation Static : Navigation 기능을 사용하기 위해 활성화  Map을 Static 설정한다.   맵 전체를 Bake   Walkable 과 Not Walkable로 걸을 수 있는 구역과 없는 구역을 설정  3. Obstacle 설정Navigation이 장애물을 회피하면서 경로를 찾기위해 설정동적인 장애물에는 설정 X      4. NPC 설정..

유니티 2023.12.14

아이템 정보 만들기 (ScriptableObject)

ScriptableObject 유니티에서 제공하는 대량의 데이터를 저장하는데 사용하는 데이터 컨테이너 데이터 컨테이너로 데이터를 공유할 수 있고, 이를 통해 메모리 사용량 줄일 수 있음 설정 방법 스크립트 작성 ItemData (부모 클래스) [CreateAssetMenu(fileName = "ItemData_", menuName = "Data/ItemData", order = 0)] public class ItemData : ScriptableObject { public string ItemName; public string Description; public int Price; public bool IsEquiped; public Sprite IconImage; } WeaponData (자식 클래스)..

유니티 2023.12.14