매개변수 Collision2D collision
현재 컴포넌트를 가지고 있는 오브젝트에 부딪힌 오브젝트 정보
물리적인 충돌이 일어나고 호출되는 이벤트함수
-아이템을 획득하거나 적을 공격하거나 함정을 밟아 장애물이 튀어나온다 등
OnCollisionEnter2D 두 오브젝트가 충돌하는 순간 1회 호출
OnCollisionStay2D 충돌 직후 맞닿아 있는 동안 매 프레임 호출
OnCollisionExit2D 두 오브젝트가 떨어져서 충돌이 종료되는 순간 1회 호출
public class collision : MonoBehaviour
{
[SerializeField] private Color color;
private SpriteRenderer renderer;
private void Awake()
{
renderer = GetComponent<SpriteRenderer>();
}
private void OnCollisionEnter2D(Collision2D collision)
{
string name = collision.gameObject.name;
Debug.Log("collision name:" + name);
renderer.color = color;
}
private void OnCollisionStay2D(Collision2D collision)
{
//Debug.Log(gameObject.name + " : OnCollisionStay2D 실행");
}
private void OnCollisionExit2D(Collision2D collision)
{
renderer.color = Color.white;
}
}
물리적인 충돌 없이 이벤트 함수가 호출
OnTriggerEnter2D 두 오브젝트가 충돌하는 순간 1회 호출
OnTriggerStay2D 충돌 직후 맞닿아 있는 동안 매 프레임 호출
OnTriggerExit2D 두 오브젝트가 떨어져서 충돌이 종료되는 순간 1회 호출
public class Trigger : MonoBehaviour
{
[SerializeField]
private GameObject moveObject;
[SerializeField]
private Vector3 moveDirection;
private float moveSpeed = 5.0f;
private void Awake()
{
}
private void OnTriggerEnter2D(Collider2D collision)
{
// moveObject 색상을 검은색으로 변경
moveObject.GetComponent<SpriteRenderer>().color = Color.black;
}
private void OnTriggerStay2D(Collider2D collision)
{
// 오브젝트 방향 이동
moveObject.transform.position += moveDirection * moveSpeed * Time.deltaTime;
}
private void OnTriggerExit2D(Collider2D collision)
{
moveObject.GetComponent<SpriteRenderer>().color = Color.white;
moveObject.transform.position = new Vector3(0, 4, 0);
}
}
'Study > Unity' 카테고리의 다른 글
Unity Instantiate Quaternion Euler (0) | 2021.07.15 |
---|---|
Unity SerializeField (0) | 2021.07.15 |
[Unity Component] Rigidbody2D Collider2D (0) | 2021.07.14 |
Unity Time.deltaTime (0) | 2021.07.14 |
Unity 이벤트 함수 (0) | 2021.07.13 |