728x90
반응형
원기둥 오브젝트를 생성하고 Bullet Spawner로 이름을 변경합니다.
위치는 (8, 1, 0)으로 설정해줍니다.
에셋의 Bullet Color 머터리얼을 씬 창의 원기둥 오브젝트로 드래그&드롭합니다.
탄알 생성기 스크립트를 작성합니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BulletSpawner : MonoBehaviour
{
public GameObject bulletPrefab; //생성할 탄알의 원본 프리팹
public float spawnRateMin = 0.5f; //최소 생성 주기
public float spawnRateMax = 3f; //최대 생성 주기
private Transform target; //발사할 대상
private float spawnRate; //생성 주기
private float timeAfterSpawn; //최근 생성 시점에서 지난 시간
void Start()
{
//최근 생성 이후의 누적 시간을 0으로 초기화
timeAfterSpawn = 0f;
//탄알 생성 간격을 spawnRateMin과 spawnRateMax 사이에서 랜덤 지정
spawnRate = Random.Range(spawnRateMin, spawnRateMax);
//PlayerController 컴포넌트를 가진 게임 오브젝트를 찾아 조준 대상으로 설정
target = FindObjectOfType<PlayerController>().transform;
}
void Update()
{
//timeAfterSpawn 갱신
timeAfterSpawn += Time.deltaTime;
//최근 생성 시점에서부터 누적된 시간이 생성 주기보다 크거나 같다면
if (timeAfterSpawn >= spawnRate)
{
//누적된 시간을 리셋
timeAfterSpawn = 0f;
//bulletPrefab의 복제본을 transform.position 위치와 transform.rotation 회전으로 생성
GameObject bullet = Instantiate(bulletPrefab, transform.position, transform.rotation);
//생성된 bullet 게임 오브젝트의 정면 방향이 target을 향하도록 회전
bullet.transform.LookAt(target);
//다음번 생성 간격을 spawnRateMin, spawnRateMax 사이에 서 랜덤 지정
spawnRate = Random.Range(spawnRateMin, spawnRateMax);
}
}
}
오브젝트에 스크립트를 드롭하고 Bullet Prefab 필드에 Bullet 프리팹을 드롭합니다.
정상 동작하는걸 확인합니다.
탄알 생성기도 프리팹을 생성하고, 오브젝트를 세개 더 만든 뒤 위치를 설정해줍니다.
정상적으로 동작하는것을 확인합니다.
728x90
반응형
'유니티 > 닷지(3D 탄막 슈팅 게임)' 카테고리의 다른 글
닷지(5) - 게임 매니저와 UI (0) | 2021.08.05 |
---|---|
닷지(3) - 탄알 제작 (0) | 2021.07.12 |
닷지(2) - 플레이어 스크립트 생성&입력감지 (0) | 2021.06.23 |
닷지(1) - 씬 구성&카메라 설정&플레이어 제작 (0) | 2021.06.23 |