반응형
Destroy();
오브젝트 삭제 함수로 오브젝트 or 컴포넌트 삭제 가능
컴포넌트 삭제
public class DestroySample : MonoBehaviour
{
[SerializeField]
private GameObject player;
private void Awake()
{
Destroy(player.GetComponent<PlayerController>());
}
}
오브젝트 삭제
public class DestroySample : MonoBehaviour
{
[SerializeField]
private GameObject player;
private void Awake()
{
Destroy(player);
}
}
빈 Object에 위 스크립트를 넣고 GameObject로 PlayerController 컴포넌트가 적용된 Player 객체를 집어넣으면
Player를 가져와서 삭제시키는 로직이 적용됨
Destroy(GameObject, time)으로 일정시간 뒤 삭제하도록 구현 가능
위치를 벗어났을 때 오브젝트 삭제
public class DestroySample : MonoBehaviour
{
private Vector2 limitMin = new Vector2(-7.5f, -4.5f);
private Vector2 limitMax = new Vector2(7.5f, 4.5f);
private void Update()
{
if(transform.position.x < limitMin.x || transform.position.x > limitMax.x ||
transform.position.y < limitMin.y || transform.position.y > limitMax.y])
{
Destroy(gameObject);
}
}
}
소문자 gameObject는 자기자신을 의미한다
특정 오브젝트와 충돌했을 때 오브젝트 삭제
- 충돌할 두 물체에 Collider 적용 필수
- 두 물체 중 한개 이상에 RigidBody 적용 필수
- 두 물체 중 하나 이상에 IsTrigger 체크 필요
- Collider에서 체크
public class DestroySample : MonoBehaviour
{
private SpriteRenderer spriteRenderer;
private void Awake()
{
spriteRenderer = GetComponent<SpriteRenderer>();
}
private void OnTriggerEnter2D(Collider2D collision)
{
Destroy(collision.gameObject);
StartCoroutine("HitAnimation");
}
private IEnumerator HitAnimation()
{
spriteRenderer.color = Color.red;
yield return new WaitForSeconds(0.1f);
spriteRenderer.color = Color.white;
}
}
벽에 위 스크립트를 적용하면 자신에게 충돌되는 물체가 collision.gameObject로 들어옴
코루틴
- 시간의 경과에 따른 명령을 주고싶을 때 사용하게 되는 문법.
- 코루틴을 사용한다면 일정 시간 멈춰있다가 동작하는 등 작업을 수행할 수 있음
- Update에서 이걸 수행하려면 Time.deltaTime으로 카운팅 해가면서 작업해야 함
- 비용이 많이 든다
반응형
'Unity' 카테고리의 다른 글
Instantiate 활용 예제 (0) | 2023.07.23 |
---|---|
게임 오브젝트 생성 함수 (0) | 2023.07.23 |
게임오브젝트 물리와 충돌 (0) | 2023.07.23 |
게임 오브젝트 이동 (0) | 2023.07.23 |
이벤트 함수 (0) | 2023.07.23 |