인텔리킴의 Unity Studying & Game Analysis
26. 유니티 2D 종스크롤 슈팅 - 적 유닛 만들기 본문
적 기체 프리펩
콜라이더 설정 다각형은 Polygon Collider
Custom Physic Shape로 물리 충돌 도형 변경 가능
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Enemy : MonoBehaviour
{
public float speed;
public int health;
SpriteRenderer spriteRenderer;
Rigidbody2D rigid;
public Sprite[] sprites;
void Awake()
{
spriteRenderer = GetComponent<SpriteRenderer>();
rigid = GetComponent<Rigidbody2D>();
rigid.velocity = Vector2.down * speed;
}
//적 피격 시 상호작용
void onHit(int dmg)
{
health -= dmg;
//평소 스프라이트는 0, 피격시 스프라이트는 1
spriteRenderer.sprite = sprites[1];
//데미지 들어오고 일정 시간 후 원래대로 스프라이트 돌아오게 함
Invoke("ReturnSprite", 0.1f);
if (health <= 0) {
Destroy(gameObject);
}
}
//적 피격 후 스프라이트 설정
void ReturnSprite()
{
spriteRenderer.sprite = sprites[0];
}
void OnTriggerEnter2D(Collider2D collision)
{
//만약 경계선에 닿으면 사라짐
if (collision.gameObject.tag == "BorderBullet")
Destroy(gameObject);
//총알에 닿으면 onHit함수 호출
else if (collision.gameObject.tag == "Bullet") {
Bullet bullet = collision.gameObject.GetComponent<Bullet>();
onHit(bullet.bulletDamage);
//부딫히면 총알 삭제
Destroy(collision.gameObject);
}
}
}
velocity 값을 할당해서 속력을 부여함
히트 시 Bullet 함수에서 데미지를 가져와서 적에게 데미지
* 프리팹으로 저장후 Transform 초기화 해야함
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameManager : MonoBehaviour
{
//적, 소환 위치 설정
public GameObject[] enemyObjects;
public Transform[] spawnPoints;
//적 스폰 딜레이 설정
public float maxSpawnDelay;
public float curSpawnDelay;
void Update()
{
curSpawnDelay += Time.deltaTime;
if (curSpawnDelay > maxSpawnDelay)
{
SpawnEnemy();
maxSpawnDelay = Random.Range(0.5f, 2.0f);
curSpawnDelay = 0;
}
}
//적 소환 함수
void SpawnEnemy()
{
//랜덤 변수를 통해 소환할 적과 적 위치 조정
int randomEnemy = Random.Range(0, 3);
int randomPoint = Random.Range(0, 5);
Instantiate(enemyObjects[randomEnemy], spawnPoints[randomPoint].position, spawnPoints[randomPoint].rotation);
}
}
RandomRange는 현재 사용하지 않는 함수
Random 함수는 매개변수에 따라 변수형이 변경
* Instantiate() : 매개변수 오브젝트를 생성하는 함수
* 배열에 빈 공간이 있으면 오류 날 확률 높음!
'게임 개발 일지 > 유니티 엔진 공부' 카테고리의 다른 글
28. 유니티 2D 종스크롤 슈팅 - UI 작성 (0) | 2024.05.29 |
---|---|
27. 유니티 2D 종스크롤 슈팅 - 적 전투와 피격 이벤트 (0) | 2024.05.24 |
25. 유니티 2D 종스크롤 슈팅 - 총알 발사 구현 (0) | 2024.05.13 |
24. 유니티 2D 종스크롤 슈팅 - 플레이어 이동 구현 (0) | 2024.05.12 |
23. 유니티 탑다운 2D 게임 제작 - 서브메뉴, 저장기능 제작 (0) | 2024.05.10 |