개발 TIL 71

7/11 부트캠프 개발 TIL (적 구현하기 3)

마지막으로 물리적으로 플레이어를 따라가서 돌진하는 적을 만들어보자물리적인 적은 무기 사용 없이 이동하면서 공격하는 동작을 만들 것이다. 물리 적 구현한 스크립트이다.using UnityEngine;public interface IPhysicalType{ public void UsePhysicalAttack(); public void UsePhysicalSkill();}public class PhysicalEnemy : NormalEnemy, IPhysicalType{ //그냥 돌진하듯 달려들고 벽에 닿으면 반대 방향으로 [Header("상태 머신")] public PhysicalEnemyStateMachine stateMachine; public NormalEnemyAni..

개발 TIL 2024.07.18

7/10 부트캠프 개발 TIL (적 구현하기 2)

어제 검사 적을 구현했으면 다음에는 궁수 적을 구현해보자궁수 적은 검사 적과 달리 근접해서 공격하는 것보다 원거리에서 공격하는 것이 주특기다. 상태머신 구현은 검사 적이랑 비슷하나 내부에서는 다른 코드로 동작을 다르게 한다. 먼저 BowEnemy를 구현하자 (SwordEnemy랑 비슷하다)using UnityEngine;public interface IBowType{ public void UseArrowAttack(); public void UseArrowSkill();}public class BowEnemy : NormalEnemy, IBowType{ [Header("상태 머신")] public BowEnemyStateMachine stateMachine; public Nor..

개발 TIL 2024.07.18

7/9 부트캠프 개발 TIL (적 구현하기 1)

게임을 할 때 플레이어와 보스 그리고 적이 있을 것이다. 그중에 적을 구현할 것인데, 적도 종류가 다양할 것이다.적의 종류가 땅에서 움직이는 놈도 있고 나는놈도 있고 공격하는 놈도 있고 여러가지이다.적들 중에 검, 궁수, 물리 적인 것들을 구현할 것이다. 우선 검사적부터 구현해보자인스펙터를 살펴보면가장 중요한 핵심은 SwordEnemy이다. SwordEnemy의 상태도 당연히 존재할텐데 idle, move, attack, skill, stun, dead가 있을 것이다.우선 컴포넌트를 연결할 스크립트부터 작성해보자using UnityEngine;//인터페이스는 적 검사마다 공격 동작이 변동될 수 있다.public interface ISwordType{ public void UseSwordAttack(..

개발 TIL 2024.07.18

7/8 부트캠프 개발 TIL (프로젝트 최적화)

유니티 빌트 최적화에서 한걸음 더 나아가보자Stats : 프로그램이 돌아가는 간단한 상태 FPS : 초당 프레임, 그래픽이 그려지는 양ms : 반응속도, 한 프레임당 몇ms가 일어났는지가장 최적의 방법은 FPS를 높이고 ms를 낮추게 하는 것이다. (에디터와 exe창의 결과가 다를 수 있다)단 FPS게임에서는 3D같은 경우에는 FPS값을 높이고 모바일의 경우에는 FPS를 제한해야야 한다 그렇지 않으면 디바이스의 발열이 생겨 실행하는데 문제가 생길수 있다. 프레임 제한을 걸어주는 코드는Application.targetFrameRate로 제한값을 설정해준다.ex) Application.targetFrameRate = 60; 스크립트코루틴에서 보면  IEnumerator AddText(string des..

개발 TIL 2024.07.10

7/5 부트캠프 개발 TIL (보스몹 구현)

오늘 TIL은 쓸 내용이 없어서 이 내용이라도 구현하고자 한다.최종 프로젝트 때 사용할 3번째 보스를 구현했다. 보스의 동작은 Ready > Fly > Throw > Fall 순으로 진행된다.사용 기능은 FSM을 사용하였고 물리는 Rigidbody의 주로 사용하는 함수를 작성하였다. 먼저 기반 스크립트부터 보자using UnityEngine;public class Boss3 : Enemy{ public Boss3StateMachine boss3StateMachine; //폭탄 오브젝트 풀 public ObjectPool Bombs; public Transform targetPlayer { get; private set; } //플레이어 목표 지점 public float Curr..

개발 TIL 2024.07.10

7/4 부트캠프 개발 TIL (Debug의 최적화)

유니티 에디터에서 스크립트의 변수, 상태 그리고 메서드가 잘 들어갔는지 확인하기 위하여 Debug.Log를 많이 사용하고 있다.그런데 Debug.Log를 사용해서 확인하는건 좋지만 최적상에서 많은 메모리가 사용되고 있다는 점이다.실행하면 가비지 컬렉터가 큰 용량을 솟구치다가 아래로 떨어지고 있다. 현재상으로 문제 없어 보이지만 Debug.Log를 많이 사용하고 빌드할 때 성능에 문제가 일어날 수 있다. 그렇다면 어떻게 콘솔출력창으로 성능을 최적화할까? Debug.Log를 사용하면 에디터에 출력이 되지만 빌드하고 나서도 내용이 출력이 된다.에디터에만 콘솔출력만 하고 빌드할 때 출력시키고싶지 않는다면 어떻게 해야 할까?바로 Debug.Assert로 빌드할 때 Debug.Log를 막아주는 것이다. ..

개발 TIL 2024.07.09

7/3 부트캠프 개발 TIL (타일 룰, 애니메이션)

맵을 만들때 타일도 물론 존재하지만 그 안에서 움직이는 애니메이션이나 특정 이미지를 그릴 때 테투리를 자동으로 표시하고 싶을 때 구현하는 것이 있다. 이들의 구현하는 방법은 간단하다.여기서 다룰건 2가지 가 있는데 Animated Tile과 Rule Tile이다 Animated Tile : 타일을 애니메이션으로 움직이고 싶을 때 여러 이미지로 하나의 타일로 움직이게 할 수 있다.인스펙터에 이런 구조가 되어 있는데 Number of Animated Sprites를 4로 설정하고 움직이는 캠프파이어 이미지를 불러와서 적용했다.Minimum Speed, Maximum Speed : 초당 몇번 반복할건지 두 값 사이에서 랜덤으로 설ㅈㅇStartTime : Time.DeltaTime만큼의 몇부터 시작할건지Star..

개발 TIL 2024.07.08

7/2 부트캠프 개발 TIL (타일맵 콜라이더)

RPG게임을 만들다 궁금한게 있을텐데 바로 특정타일에 닿았을때나 부딪힐 때 충돌같은 더이상 움직이게 하지 않는 것을 구현하는 것이다. 중요한 것은 Tilemap Collider를 추가하고 Used By Composite를 체크하고 CompositeCollider를 추가해야 한다. Rigidbody도 자동으로 추가한다 단 Body Type은 static으로 해야 한다. 이유는 중력이나 마찰의 영향으로 문제생길수 있다. 물론 트리거 적용도 할수 있다.우선 씬을 이동하기 위한 맵을 구상했기 때문에 Build Setting에서 씬을 가져온다.실행하고 이동시키게 해보자다가갔더니 씬이 이동되었다. 코드를 살짝 만지긴 했는데using UnityEngine;using UnityEngine.SceneManagement;..

개발 TIL 2024.07.05

7/1 부트캠프 개발 TIL (프로파일러)

프로파일러는 유니티를 실행하는 동안 메모리를 얼마나 사용하고 있는가를 확인해주는 역할이다.창을 열면 이렇게 나와있는데, 각 사용하는 종류마다 차이가 있다.CPU Usage, Rendering, Memory, Audio, Video, Physics, UI, UI Details, Realtime GI, Virtual Texturing여기서 가장 중요하게 볼 것은 CPU Usage다. 이게 어떻게 돌아가는지 확인하기 위해 에디터를 실행해보자실행했더니 각 성능별로 그래프가 움직인 걸로 볼수 있다.CPU Usage에서 스크립트만 표시해보면스크립트 사용량이 이정도 양을 사용했다고 표시를 한다. 다른 항목도 마찬가지 현재 어떤것이 돌아가고 있는지 알아보고 싶으면 왼쪽 색상을 클릭하여 검게 숨기고 확인하고 싶은것만 남..

개발 TIL 2024.07.04

6/28 부트캠프 개발 TIL (Sprite Atlas)

Sprite Atlas란 스프라이트 파일 여러개를 가져다가 하나의 에셋 파일로 압축해 놓은 것을 말한다. 시작하기 앞서 Sprite Atlas를 따로 설치해야 되는데 Project Setting에 들어가서 해야한다.설정을 마치고 에셋에 추가해보자 이제 Sprite Atlas가 무슨 역할을 해주는지 인스펙터로 설명하겠다.우선 타입이 2가지가 있다. Master와 Variant가 있는데Master는 모든 스프라이트를 하나로 압축하는 것이고Variant는 Master Atlas를 가져오는 것인데 주로 Master 타입을 사용한다. 어떻게 하는건지 알기 위해 이렇게 소닉 스프라이트를 가져왔다.소닉 스프라이트를 Sprite Atlas 마스터 이미지에서 Objects for Packing 항목을 추가하여 스프라이트..

개발 TIL 2024.07.03