unity 30

[Unity] 3D Surviver 팀 프로젝트 중, 상태(Stat) UI

UI 담당은 아니었으나 적용되는 원리에 대해 공부도 할겸 Stat 손대는김에 같이 작성했었다.중간에 이상한곳에 적용하기도 했고 쌩뚱맞게 다른방법도 시도해보고 했었는데 정신없는 나머지 어떤식으로 했었는지 기록하지는 못했다......(ノへ ̄、) using UnityEngine;using UnityEngine.UI;public class ConditionUI : MonoBehaviour{ public PlayerCondition playerCondition; public Image _Health; public Image _Hunger; public Image _Stamina; public Image _Moisture; public string conditionType; p..

Unity/Unity Study 2025.03.20

[Unity] 3D Surviver 팀 프로젝트 중, Player Animation 설정 (feat. Mixamo)

원래 사용하려는 캐릭터 Asset에 애니메이션이 다 있는줄알고 받았는데 없었다. 창의적인 감자인 나는 내가 bone의 rotation값을 다 만져서 애니메이션 작업을 해야하나 고민을 했다.그러다 알게된 Mixamo, 어도비에서 서비스하는 3D 캐릭터의 애니메이션 적용 사이트다.다양한 캐릭터 모델과 애니메이션을 제공하고 있어 많은 사람들이 이용하는데 이곳에서 내 캐릭터의 애니메이션을 유니티에 적용할 수 있다!접속해서 우측 상단의 UPLOAD CHRACTER 버튼을 누르면 위와같이 창이 뜨고, 드래그 하거나 Select Charactor file을 클릭하면 직접 파일을 선택할 수 있다.나의 경우 fbx파일이 있어 넣어주었고, 잠깐 로딩창이 뜨는데 기다리면 된다, 이후 AUTO-RIGGER라는 창이 뜨면 캐릭..

Unity/Unity Study 2025.03.19

[Unity] 3D Surviver 팀 프로젝트 중, 트러블슈팅 : 달리기 및 스탯변화

플레이어의 체력(Health), 배고픔(Hunger), 스태미나(Stamina)는 다음과 같은 구조를 가진다.배고픔은 시간이 지나면서 지속적으로 감소하며, 0이되면 체력이 서서히 감소한다.스태미나는 특정 행동을 할 때 감소하며, 0이되면 특정 행동을 할수없게 된다.스태미나는 소모되지 않는 행동을 할 경우 서서히 회복된다.배고픔의 경우 꾸준히 음식을 먹어줘야 하며 모든 스탯은 아이템을 통하여 즉시 회복이 가능하다. 이러한 구조를 위해 지금껏 스탯을 계속 나눠주었던거고 PlayerCondition에서 해당 코드를 작성해주었다.public class PlayerCondition : StatManager{ public void Update() { curHunger = Mathf.M..

Unity/Unity Study 2025.03.18

[Unity] 3D Surviver 팀 프로젝트 중, 스탯 부분 리팩토링

처음에는 플레이어 전용 스탯 관리를 위해 PlayerCondition을 만들고, 여러 스탯 계산을 편리하게 하기 위해 Condition 클래스를 추가하여 메서드를 만들어 사용했었으...나 이런 방식은 코드가 지저분하고 PlayerController에서 스태미나 감소 등을 처리하는 과정도 있고 여러곳에서 이상하게 사용되는 느낌이 들어, 결국 Condition 클래스를 제거하고 모든 스탯 관리 기능을 PlayerCondition에 통합하기로 결정했다. Condition에는 Add(추가), Subtract(감소) 등의 함수가 있었으며 이것을 PlayerCondition에서 간단하게 사용했지만 단순한 추가, 감소정도는 코드가 길지 않기에 변경해주었다.public class Condition : MonoBehav..

Unity/Unity Study 2025.03.18

[Unity] 3D Surviver 팀 프로젝트 중, 다른 타입으로 발생한 null

플레이어나 NPC, 적 등 공통적으로 필요한 HP와 같은 스탯을 관리하기 위해 StatManager를 만들어 스탯(Health, Stamina 등)을 관리할수 있게 해주었다그리고 플레이어만의 스탯 관리를 위해 PlayerCondition을 만들어주고 여러 스탯 계산을 용이하게 하기 위해 위해 Condition을 만들어 계산하기 편하게 메서드를 만들어주었다.public class Condition : MonoBehaviour{ public float curValue; public float maxValue; public void Add(float Value) { curValue = Mathf.Min(curValue + Value, maxValue); }}Conditi..

Unity/Unity Study 2025.03.14

[Unity] 개인 프로젝트 중, 자원 획득 및 오브젝트 파괴

아이템 설정도 해두었으니 이제는 자원에서 아이템을 획득하는 기능을 구현할 차례! public class Resource : MonoBehaviour{ public ItemData itemToGive; // 아이템 데이터, 타격하면 주는 아이템 등 public int quantityPerHit = 1; // 타격할때 나오는 아이템 개수 public int capacity; // 타격 가능횟수 public void Gather(Vector3 hitPoint, Vector3 hitNormal) { for (int i = 0; i  Gather() 메서드를 호출하면 특정 위치(hitPoint)에서 자원을 타격할 수 있다.한번 타격할 때 quantityPerHit의..

Unity/Unity Study 2025.03.13

[Unity] 개인 프로젝트 중, ScriptableObject 를 활용한 아이템 설정

ScriptableObject - 유니티에서 제공하는 데이터 컨테이너로 게임에서 사용되는 데이터를 게임 리소스에 미리 저장하여 사용할 수 있다.  ScritableObjetct를 사용하려면 먼저 C# 스크립트에서 클래스를 선언해야 한다.// "Assets > Create" 메뉴에서 "New Item"으로 표시됨// 새 ScriptableObject를 생성하면 기본 파일명은 "Item"이 됨// 코드에서 직접 생성할 경우 매개변수 없이 사용 가능, ()생략[CreateAssetMenu(fileName = "Item", menuName = "New Item")]// ScriptableObject를 상속받아 데이터 클래스로 사용public class ItemData : ScriptableObject{}  이렇..

Unity/Unity Study 2025.03.12

[Unity] 개인 프로젝트 중, 키 입력 시 이미지 띄우기

이 이미지 띄우기는 InputSystem이 아닌 버튼 클릭 시 나오는 메뉴로 이미지를 띄우는거 자체는 전부 버튼으로 처리하려고 하였으나 생각해보니 게임중에 마우스 커서가 안나오게 되어있어 클릭을 할수가 없었다..그리하여 esc 키를 누를 시 메뉴와 같이 나타나게 해주려고 하였으며, 키 입력을 전부 (New)PlayerInputSystem을 이용하고 있어 Tutorial - esc키로 하여 만들어주었다. 사실 설명보다는 메뉴(음량설정 및 게임종료 등)에 적합한 키설정이지만 처음 게임을 시작하면 도끼가 있는데 이 도끼로 무엇을 할 것인가에 대해 의문을 가지지 않을까 싶어 만들게 되었다.tutorialMenu 라는 이름의 게임 오브젝트로 만들어 두었으며 원래는 버튼으로 해두려고 하였기 때문에 껏다키는 기능을 ..

Unity/Unity Study 2025.03.11

[Unity] (New) Input System - Jump

Move를 진행하면서 생각보다 점프도 간단하겠지 싶었는데 아니었다, 그래서 정리해보았다.Jump는 스페이스바로 지정해주었다.public class PlayerController : MonoBehaviour{ [Header("Moverment")] public float jumpPower; // 플레이어를 레이어 마스크에서 빼주기 (플레이어까지 감지하지 않게) public LayerMask groundLayerMask; public void OnJump(InputAction.CallbackContext context) { // 점프키가 처음 눌린 순간에만 실행되도록 함 if(context.phase == InputActionPhase.Started ..

Unity/Theory 2025.03.06