Unity/Unity Study 32

[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] 쿠키런 모작 팀 프로젝트 중, Map 제작

원래 기본적인 기능 구현만 하려고 했던지라 맵을 여러개 제작할 생각은 없었으나 다른 맵 제작이 가능한 시간이 생겨기본맵은 다른분이 만드셨고 아이템 구현이 끝난 시점에서 맵 추가 얘기가 나와 2, 3번째 맵은 내가 만들어보겠다고 말씀드리고 원하는 맵을 골라 제작했다. 원래 맵을 담당하던 팀원분이 계셧으나 기본 맵 이후 다른 추가적인(맵 외에 중요한) 기능 구현에 들어가신 후 내가 추가적인 맵을 제작하게 되어 스크립트나 큰 틀은 기본맵을 담당해주시던 팀원분께서 구현해주신 기능을 사용하여 제작하였다.  배경은 큰 배경(BackGround), 작은 배경/배경 효과(ForeGround) 두개로 나누었으며 특정 오브젝트가 화면을 벗어나면 앞으로 이동시키는 식으로 배경을 무한 루프하게 해주었다. 배경이 다같은 속도로..

Unity/Unity Study 2025.03.04

[Unity] 쿠키런 모작 팀 프로젝트 중, Item 3 - PlayerPrefs를 이용한 저장기능 추가

젤리와 코인 기능은 이쪽에 코인, Coin원래 코인(Coin)은 Jelly의 일종으로 AddScore(점수추가)기능만 구현하려고 하였는데, 코인을 얻어 해금하는 식으로 하자는 얘기가 나와 코인 스크립트를 따로 생성하였다. 코인에는 AddScore를 추가했던 것처럼 SerializeField를 이용하여 Inspector에서 각각의 프리펩(오브젝트)에 코인값을 입력할 수 있게 해주었으며 다른 아이템과 동일하게 충돌하면 사라지고, 사라지면 아이템의 효과가 적용되는 방식이다.public class Coin : Item{ [SerializeField] private int coin; public override void ApplyEffect(Cookie cookie) { base.Ap..

Unity/Unity Study 2025.02.28

[Unity] 쿠키런 모작 팀 프로젝트 중, Item 2 - 기본 아이템 구현 (완성)

1편에서 이어지는 글그리하여 작성한 코드는 아래와 같다. 아이템, Itempublic class Item : MonoBehaviour{ private void OnTriggerEnter2D(Collider2D collision) { Cookie cookie = collision.GetComponent(); if (cookie != null) { ApplyEffect(cookie); Destroy(gameObject); } } public virtual void ApplyEffect(Cookie cookie) { }}아이템 클래스는 모든 아이템 공통적으로 적용될 부분만 작성해주었다. 그..

Unity/Unity Study 2025.02.27

[Unity] 쿠키런 모작 팀 프로젝트 중, Item 1 - 기본 아이템 구현 (트러블)

사실 아이템은 예전부터 해보고싶었던 부분이지만 지금의 내가 맡기엔 어려운 부분이라고 생각하여 그나마 자신있는 UI를 하겠다고 얘기드렸지만 해보고싶은걸 하시라며 아이템 담당으로 배정해주신 팀원분들.. 믿고맡겨주셨는데 내가 다 우당탕탕 망쳐버릴까봐 무섭다, 그치만 맡은거 일단 해내야지. 내가 구상했던건 enum으로 아이템 종류를 관리, OnTriggerEnter2D로 충돌했을 때 아이템 효과를 적용, Switch/Case문으로 아이템 종류에 따른 효과를 적용할 수 있게 하려고 하였다. 일단 필수로 해야하는 아이템 3가지 먼저 구상하고 시간이 있을 경우 다른걸 구현하자 생각했던 상태로 3가지 아이템은 다음과 같다.점수가 추가하는 젤리체력이 증가하는 포션모든 장애물을 파괴하고 일시로 무적이 될수 있는 아이템뭔가..

Unity/Unity Study 2025.02.26