일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Unboxing
- Addressable System
- Abstract Factory Pattern
- Boxing
- equals
- 1인 개발
- ==
- ReferenceEquals
- ScriptableObject
- 인앱 결제
- Unity
- Android Plugin
- UniRx
- 디자인 패턴
- 게임 개발
- 스프라이트 아틀라스
- 최적화
- design pattern
- addressable
- c#
- Reflection
- sprite atlas
- 플러그인
- Strategy Pattern
- 포스트 프로세싱
- Zenject
- Post Processing
- Today
- Total
목록c# (25)
One_KWS
대미지 표시 플레이어 또는 몬스터가 공격 받았을 때 대미지 표시를 해주는 기능을 추가했다. Text는 Text Mesh Pro(TMP)를 사용했고 텍스트 애니메이션은 DOTween을 이용해 구현했다. Scene에 Text Mesh Pro를 생성해주고 위치와 크기를 조절해주었고 FloatingText라는 클래스를 만들어 붙여주었다. 텍스트가 위로 튀어 오르는 모습을 구현하고 싶어서 DOTween의 DOJump를 이용했다. 거기에 DOShakeScale을 붙여 텍스트가 튀어오르면서 출렁거리는 듯한 느낌을 주었다. 이 두가지의 Tween들을 합쳐서 보여지게 하기 위해 Sequence를 이용했다. public class FloatingText : MonoBehaviour { private readonly Vec..
일주일에 하나는 쓰려고 했는데 저번주에 쓰지 못했다.. 짧더라도 매주 꾸준히 글 하나씩은 쓰도록 노력해야겠다. 일지가 아니더라도 공부한 내용들도 정리해서 올려야겠다. (Velog랑 Notion에 정리했던 것들도 옮겨야되는데 언제 옮기지 ..) 플레이어 공격 수정 기존에 구현했던 플레이어의 공격이 다른 행동들(이동, 대쉬)과 이어질 때 자연스럽게 이어지지 않은 문제와 간혹 공격 중에 공격이 먹통되는 문제가 있어서 이것을 수정하는 작업을 진행했다. 수정하는 김에 공격 애니메이션 모션과 이펙트도 수정했다. PlayerCombat 공격 부분 로직은 전부 수정했다. AnimatorStateInfo를 이용하여 현재 애니메이션 상태를 체크하여 다음 공격으로 넘어가게 했다. currentCombo 값이 0이라면 att..
Enemy 몬스터의 클래스 구조도 플레이어와 비슷하다. 각 행동들은 IBehaviour 인터페이스를 구현하고 있고 EnemyController에서 행동들을 제어한다. EnemyController PlayerController와 마찬가지로 몬스터의 공격과 이동을 제어한다. 몬스터는 일정 범위 내에 플레이어가 들어오면 공격을 해야 하기 때문에 Physics.SphereCastAll를 이용하여 범위 내에 플레이어가 들어오는지 체크하도록 했다. [SerializeField] private float sightRange; ... private Transform FindTarget() { var hits = Physics.SphereCastAll(transform.position, sightRange, Vector..
몬스터에게 데미지 주기 공격 범위 내에 몬스터가 있는지 판단하기 위해 Physics.OverlapBox 함수를 사용했다. 플레이어의 앞에 직사각형 범위의 몬스터들을 감지하고 몬스터의 Health 클래스의 TakeDamage 함수를 통해 데미지를 전달해 주도록 구현했다. public class PlayerCombat : MonoBehaviour, IBehaviour { ... private readonly Vector3 HALF_EXTENTS = new Vector3(1f, 0.5f, 1f); ... private void TakeDamageToEnemies() { var center = transform.position + transform.forward.normalized + Vector3.up; va..
플레이어 행동 현재 플레이어의 클래스 구조는 아래와 같다. 처음에는 스크립트 하나에 전부 구현했고 이후 여러번 코드를 다듬으면서 아래와 같은 구조가 되었다. 이동, 공격, 대쉬에 대한 각각의 클래스는 IBehaviour 인터페이스를 구현하고 있다. IBehaviour 인터페이스는 해당 행동을 실행하는 Execute()와 다음 행동을 하기 전 현재 행동을 취소하기 위한 Cancel() 함수가 있다. IsOngoing은 현재 행동이 진행중인지 체크하기 위한 프로퍼티이다. public interface IBehaviour { public bool IsOngoing { get; } public void Execute(); public void Cancel(); } 플레이어 애니메이션 플레이어의 Animator ..
개임을 만드는 이유와 일지를 쓰는 이유 현재 회사에서 Unity를 사용하지만, 교육 서비스다 보니 Unity의 많은 기술 중 일부만을 사용하는 느낌을 많이 받았다. 또한 일찍이 팀장을 맡으면서 개발 외의 업무들도 하다 보니 개발하는 시간도 줄기도 했기 때문에 내 실력 향상을 위해서는 사이드 프로젝트가 꼭 필요하다고 생각했다. 그렇게 올해 6월부터 퇴근 후 조금씩 만들었는데 진행한 내용들을 정리해 놓지 않아서 바쁠 때 신경 못쓰다가 다시 돌아오면 어디까지 했는지 기억이 잘 안 나는 문제가 생겨서 .. 지금이라도 조금씩 개발한 내용들을 정리해 놓으려고 한다. (이것도 자주 쓸 수 있을지 모르겠다..) 어떤 게임을 만들 것인가 게임을 만들자는 생각을 할 때 쯤 하데스라는 게임을 하고 있었다. 그래서 자연스럽게..