본문 바로가기

전체 글

11. 탄막슈팅 보스만들기 보스 오브젝트를 생성하고 위치를 0, 0으로 초기화 합니다. 필요한 컴포넌트를 넣어주고 이름을 수정합니다. 저는 Enemy B라고 지었습니다. 캡슐 콜라이더의 범위는 아래처럼 지정했습니다. 다음으로 애니메이션을 추가합니다. Idle 상태와 피격상태 애니메이션을 보스 오브젝트에 드래그 앤 드랍해서 추가합니다. 파라미터는 트리거 형태의 onHit하나만 생성했으며, 아래처럼 Transition(화살표)를 이어줍니다. 이제 프리펩 폴더에 보스 오브젝트를 드래그 앤 드랍해서 프리펩으로 저장합니다. 그 후에 Enemy 스크립트를 넣어주고, 태그를 수정합니다. 보스가 쓸 총알도 프리펩을 생성합니다. 프리펩 적 총알 아무것이나 클릭 후 Crtl+D로 복사본을 만들어줍니다. 보스의 총알은 위에서 아래로 쏘아지니 Flip.. 더보기
10. 보조슈터 만들기 Player Bullet 프리펩을 누른 후 Ctrl + D로 프리펩 복사본 생성 인스펙터에서 Open Prepab을 눌러 이름과 스프라이트, 콜라이더 범위 수정 Follower 오브젝트 3개 생성 & 모두 비활성화 Follower 스크립트 생성 및 Follower 오브젝트들에게 주기 Follower 스크립트 코드 입력 큐를 이용한 로직 구성 //Vars public float maxShotDelay; public float curShotDelay; //ObjectManager; public ObjectManager objectManager; public Vector3 followPos; public int followDelay; public Transform parent; public Queue pare.. 더보기
9. 텍스트파일을 이용한 커스텀 배치 구현 TXT파일로 적들이 편대를 이뤄 날아오도록 구현해보겠습니다. 바탕화면에 TXT파일을 하나 생성해주고, 유니티 프로젝트에도 빈 폴더를 하나 생성해, 그곳에 드래그 앤드랍으로 넣어줍니다. 위 Stage0을 더블클릭하면 VS가 열리는데, 여기서 txt 파일을 수정하여 인게임에 적용시킬 수 있습니다. txt 내용은 아래 형식처럼 스폰딜레이 시간, 적 타입, 스폰 포지션 순이며 커서가 마지막 줄 바로 오른쪽에 있도록 합니다. 그리고 Spawn 스크립트를 하나 만들어주고 아래 코드를 입력합니다. public class Spawn //MonoBehaviour 상속 불필요! { public float delay; //스폰 딜레이 public string type; //적 타입 public int point; // 스폰.. 더보기
8. 오브젝트 풀링 지금까지는 필요한 오브젝트를 만들때 아래 두 함수를 사용했습니다. Destroy(gameOjbect); Instantiate(gameObject); 그러나 Destroy와 Instantiate는 오브젝트를 생성, 삭제하면서 가비지(Garbage : 쓰레기 값)를 만듭니다. 이 가비지가 쌓이면 유니티에서 가비지컬렉트(GC : 쌓인 조각난 메모리를 비우는 기술)를 실행하는데, 이때 게임이 끊기게됩니다. 이를 방지하기 위해 오브젝트 풀링(Object Pooling)이란 기술을 사용합니다. * 오브젝트 풀링이란? : 미리 생성해둔 풀에서 활성화/비활성화로 사용 게임이 시작할때 미리 오브젝트들을 만들어놓고 SetActive로 활성화/비활성화만 조작해서 오브젝트를 재사용합니다. 기존에 한 오브젝트의 생명이 Inst.. 더보기
7. 원근감 있는 무한 배경 만들기 빈 오브젝트 3개 생성해서 그 안에 같은 스프라이트 오브젝트를 3개씩 만들어줍니다. 그리고 A, B, C 각각의 내부 오브젝트들을 Y축 위치를 위부터 -10, 0, 10 순서로 입력해줍니다. 그리고 A, B, C가 겹쳐서 화면에 보일 수 있게 Order in Layer을 A가 가장높게, C가 가장 낮게 설정해줍니다. Background 스크립트를 만들어 A, B, C 오브젝트에 넣어줍니다. Background 스크립트 로직 public float speed; public int startIndex; public int endIndex; public Transform[] sprites; //내부 오브젝트 맵핑 float viewHeight; void Awake() { viewHeight = Camera.m.. 더보기
6. 아이템과 필살기 구현하기 아이템 3종 프리펩 만들기 Item 스크립트 //Components Rigidbody2D rigid; //Vars public string type; void Awake() { rigid = GetComponent(); rigid.velocity = Vector2.down * 0.5f; //일자로 내려오게 하기 } void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.tag == "Border Bullet") { //Border Bullet에 닿으면 아이템 삭제 Destroy(gameObject); } } 하이라키의 아이템 오브젝트 3종을 프로젝트 프리펩 폴더에 드래그 앤 드랍해서 프리펩 생성 Player 스크립트 코드 추가 pub.. 더보기
5. 간단한 UI 만들기 점수, 라이프, 재시작 버튼 등 간단한 UI를 만들어보겠습니다. UI를 만들고 앵커와 Position으로 위치를 잡아줍니다. 라이프가 0이되었을때, 게임오버를 띄울 것이므로 Over Set 오브젝트는 비활성화 시켜놓습니다. 우선 플레이어 스크립트에 두가지 변수를 추가합니다. public int life; //라이프 public int score; //점수 public bool isHit; //이중피격을 방지하기 위한 변수 그리고 플레이어 스크립트의 OnTriggerEnter2D 함수에 다음 코드를 입력합니다. void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.tag == "Border") { ... } else if (colli.. 더보기
4. 적 전투기 총알 & 플레이어 피격 이벤트 구현 먼저 적 전투기 생성 위치를 더 추가해보도록 하겠습니다. 좌우 각 2개씩 4개가 추가되어 스폰포인트는 총 9개가 되었습니다. GameManager 스크립트에 있는 배열을 갱신해줍니다. 이어서, GameManager 스크립트에서 스폰 포인트 선택 난수 로직을 수정합니다. 난수 0~4 사이 출력 -> 0~8 사이 출력으로 수정 void spawnEnemy() { int ranPoint = Random.Range(0, 9); } 그 다음으로 양 옆에서 나오는 전투기들의 방향을 수정해 보겠습니다. void spawnEnemy() { //Enemy Spawn int ranEnemy = Random.Range(0, 3); int ranPoint = Random.Range(0, 9); GameObject enemy .. 더보기