전체 글 93

DOTween에서, 오브젝트의 속도값에 따라 이동하도록 하기

DOTween은 분명 간단한 움직을 구현하기 쉬운 도구임이 틀림없다. 그러나 개인적으로 아쉬운 점이 있었는데, 이동하는 속도를 제어하는데 '이동하는데 걸리는 시간'을 이용한다는 점이었다. transform.DOMove(_goalPoint.position, 5f); DOTween의 이동과 관련된 메서드들은 위 예시처럼 '목표 지점을 향해 5초 동안 이동' 처럼 작동한다.이 시간 기반의 애니메이션은 분명 장점이 있지만, 나의 경우에는 다소 달랐다. 내가 DOTween을 통해 구현하고자한 것은 '몬스터' 오브젝트의 이동이었다.중력효과가 필요했다면, Rigidbody를 이용할 수도 있었겠지만, 몬스터의 이동이 단순하였기에, DOTween을 계속 이용하고 싶었다. 몬스터들은 각기 다른 위치에서 생성되며, 플..

TIL 2025.04.25

몬스터 체력 감지 리팩토링 및 프로파일러를 통한 성능개선 체크

프로젝트를 진행하던 도중, 몬스터가 일정 체력에 도달하는 여부를 체크하는 것이 필요했다. 몬스터의 데이터에서 몇 퍼센트 인지가 0.3f 같은 형태로 주어지고, 해당 값에 맞게 조정하면 됐다. 처음에는 체력이 30%가 될 때를 감지한다는 목적에 꽂혀, 다음과 같은 식으로 코드를 작성했다.좋지 않은 코드이다. // 불필요한 부분은 편집된 코드임public class BossController : MonsterController{ private float _angerHealth; private int _skillBeforeAngerCount; private MonsterData monsterData; protected override void SetMonsterData(Monst..

TIL 2025.04.23

DOTween 트윈 이벤트 메서드와 활용

DOTween에서는 DoMove, DoJump 같은 이동, 애니메이션 효과를 위한 메서드 뿐만 아니라 이를 보조할 다른 메서드들도 제공한다. 대표적으로 OnStart, OnPlay, OnComplete, OnKill이 있다.private Tween MoveToPoint(Vector3 p_pointPosition){ return transform.DOMove(p_pointPosition, _moveDuration) .OnStart(MoveStart) .OnPlay(MovePlay) .OnComplete(MoveEnd) .OnKill(MoveKill);}private void MoveStart(){ Debug.Log("Move Start");}pr..

TIL 2025.04.21

DOTween의 Sequence

https://jooglorystar98.tistory.com/89 DOTween의 기본 메서드DOTween은 Tween기반으로 애니메이션을 관리할 수 있는 도구이며, 유니티 애셋 스토어에서 찾을 수 있다. https://assetstore.unity.com/packages/tools/animation/dotween-hotween-v2-27676 DOTween (HOTween v2) | 애니메이션jooglorystar98.tistory.com DOTween은 유니티에서 Tween기반으로 애니메이션을 관리할 수 있는 도구이며, 이동이나, 회전, 크기변화와 같은 간단한 이동을 DOTween에서 제공하는 메서드들로 구현할 수 있다. DOTween에서는 그리고 이러한 메서드들을 타임라인 관리할 수 있는 방법이 ..

TIL 2025.04.03

DOTween의 기본 메서드

DOTween은 Tween기반으로 애니메이션을 관리할 수 있는 도구이며, 유니티 애셋 스토어에서 찾을 수 있다. https://assetstore.unity.com/packages/tools/animation/dotween-hotween-v2-27676 DOTween (HOTween v2) | 애니메이션 도구 | Unity Asset StoreUse the DOTween (HOTween v2) tool from Demigiant on your next project. Find this & more animation tools on the Unity Asset Store.assetstore.unity.com 자세한 내용은 DOTween 문서에서 확인할 수 있다.https://dotween.demigiant..

TIL 2025.04.02

Git 클라이언트 'Fork'

어떤 프로젝트에 참여하게 되었는데, 그곳에서도 협업을 위해 Git을 사용하였다.다만 그 방식이 조금 달랐는데, Git GUI 프로그램으로 'Fork'를 사용한다는 점이었다.   Git을 이용하면서 Github Desktop만 사용하던 나에게는 다소 생소한 환경이긴 했지만, 그래도 새로운 환경을 시도해보는 것은 좋은 기회라고 생각했다.     한가지 시각적으로 흥미로웠던 점은 Fork는 클라이언트 자체에서 Git Graph를 확인할 수 있다는 점이었다.   다만 아직 방법을 모르는 것일 수도 있지만, Github Desktop와 다소 달라 헤맨 점도 있었다.   Fork를 연습을 해보기 위해 아무 C#프로젝트를 생성하고, 해당 폴더로 Init New Repository를 해봤다. Github Desktop..

TIL 2025.04.01

Aseprite 파일에 대해

0. 서론캐릭터에 사용하는 2D Sprite 에셋을 받을 때, 위와 같은 느낌의 스프라이트 묶음을 자주 보게 된다.  해당 스프라이트를 이용해 애니메이션을 만들거나할 때는 Sprite Mode를 Multiple로 바꾼 뒤, Sprite Editor를 통해 직접 개별 스프라이트로 분리를 할 수 있다.  그러나 이번에 받은 에셋은 처음보는 형태의 파일이 들어있었는데, Aseprite 파일이었다.   파일에는 각 스프라이트와 애니메이션 클립, 애니메이터까지 내장되어있었다.  이를 잘 이용한다면 편할 거 같아, aseprite 파일에 대해 더 알아보기로 했다.  1. 본론 1.1. '.aseprite'란?'.aseprite'는 도트형태의 스프라이트를 편집하고 애니메이션을 만들 수 있는 'Aseprite'라는 프..

TIL 2025.02.15

내일배움캠프 85일차 TIL "가비지 컬렉터"

0. 서론유니티를 통해 게임을 개발하면서 자주 듣는 조언 중 하나는 가비지 컬렉터를 신경써서 관리를 해야한다는 것이다.예를들어 오브젝트 풀과 같은 디자인 패턴을 사용하는 이유가 가비지 컬렉터의 작동을 최소화 하여 성능 저하를 방지하기 위해서이다. 그런데 가비지 컬렉터가 구체적으로 무엇이기에 관리를 해주어야 하는지 궁금해져, 이번 기회에 가비지 컬렉터의 개념, 작동 원리, 그리고 어떻게 관리해줄 수 있는지를 정리하고자 했다.  1. 가비지 컬렉터란? 가비지 컬렉션(Garbage Collection 이하 GC)은 사용하지 않은 메모리를 자동으로 해제하는 메모리 관리 기법이다. C#에서는 .NET 런타임에서 GC가 동작하며, 개발자가 메모리를 직접 수동으로 해제하지 않아도, 자동으로 힙 메모리에서 참조되지 않..

내일배움캠프 84일차 TIL "클래스와 구조체의 차이"

0. 서론 유니티에서 C#을 이용해 게임을 개발하면서 여러 클래스(Class)와 구조체(Struct)를 만들고, 이용했지만, 정작 그 차이에 대해 제대로 모르고 이용했었다. 앞으로 더 나은 개발이 가능하도록, 이러한 클래스와 구조체의 차이에 대해 정리를 하기로 결정했다. 우선 클래스와 구조체 둘 다 객체지향 프로그래밍에서 데이터를 캡슐화 하고 행동을 정의하는 역할을 한다.  그러나 클래스와 구조체는 설계와 메모리 관리 방식에서 차이가 존재한다.  1. 클래스와 구조체의 차이점 기본적으로 클래스는 참조 타입으로, 힙 메모리에 저장되며 객체의 참조를 통해 접근한다.반면 구조체는 값 타입으로 주로 스택 메모리에 저장되며, 값을 직접 복사 해 데이터를 전달한다. 1.1. 메모리 관리 클래스는 힙 메모리에 저장되..