적 충돌 구현
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 태어날 때 30% 확률로 플레이어 방향, 나머지 확률로 아래방향으로 정하고
// 살아가면서 그 방향으로 계속 이동하고싶다.
public class Enemy : MonoBehaviour
{
// 방향
Vector3 dir;
// 속력
public float speed = 5;
// Start is called before the first frame update
void Start()
{
// 태어날 때
// 30 % 확률로 플레이어 방향, 나머지 확률로 아래방향으로 정하고
int result = UnityEngine.Random.Range(0, 10);
if (result < 3)
{
// 플레이어 방향
GameObject target = GameObject.Find("Player");
// dir = target - me
dir = target.transform.position - transform.position;
dir.Normalize();
}
else
{
// 아래방향
dir = Vector3.down;
}
}
// Update is called once per frame
void Update()
{
// 살아가면서 그 방향으로 계속 이동하고싶다.
transform.position += dir * speed * Time.deltaTime;
}
public GameObject explosionFactory;
private void OnCollisionEnter(Collision other)
{
// 시각효과 공장에서 시각효과를 만들어서
GameObject explosion = Instantiate(explosionFactory);
// 내 위치에 가져다 놓고싶다.
explosion.transform.position = transform.position;
// 충돌시 플레이어, 총알 파괴
Destroy(other.gameObject);
// 충돌시 에너미 파괴
Destroy(gameObject);
}
}
OnCollisionEnter > 충돌 발생시 호출
Destroy > GameObject 제거
※ 충돌하려는 물체 중 어느 한쪽이라도 RigidBody가 적용되어있지 않다면 충돌 발생하지 않음.
맵 경계
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DestroyZone : MonoBehaviour
{
private void OnTriggerEnter(Collider other)
{
// 부딪히는걸 파괴
Destroy(other.gameObject);
}
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
리소스 과다 방지
'공부 > Unity 기초' 카테고리의 다른 글
2D 슈팅 - 5 / 에셋 적용하기 (0) | 2022.05.16 |
---|---|
2D 슈팅 - 4 / 이펙트, 오디오 적용, 동적 배경 스크롤 (0) | 2022.05.15 |
2D 슈팅 - 2 / 총알, 적 제작 (0) | 2022.05.15 |
2D 슈팅 - 1 / 사용자 입력 제어 및 오브젝트 이동 처리 (0) | 2022.05.15 |
가운데 문자 가져오기 (0) | 2022.05.15 |