객체 오브젝트를 생성할 때나 작업을 하는데에 시간 간격을 두고 실행하고 싶을 때 사용.
if (Keyboard.current.spaceKey.wasPressedThisFrame && delayTime <= Time.time)
{
Instantiate(bullet, firePosition.transform.position, firePosition.transform.rotation);
//Time.time - 지금 시간
delayTime = Time.time + attDelay;
}
delayTime2 += Time.deltaTime;
if (Keyboard.current.spaceKey.wasPressedThisFrame && delayTime2 >= attDelay)
{
Instantiate(bullet, firePosition.transform.position, firePosition.transform.rotation);
delayTime2 = 0;
}
앞의 거리에 따라 오브젝트를 감지하여 정보를 저장하는 방법.
delayTime2 += Time.deltaTime;
if(delayTime2< attDelay)
{
return;
}
// 레이캐스트 맞은 대상의 정보를 담는 자료형
RaycastHit2D hit = Physics2D.Raycast(firePosition.transform.position, Vector3.right, rayDistance);
Debug.DrawRay(firePosition.transform.position, Vector3.right * rayDistance);
if (hit.collider != null)
{
Debug.Log(hit.collider.gameObject.name);
if(hit.collider.GetComponent<Enemy>() != null)
{
hit.collider.GetComponent<Enemy>().TakeDamage();
delayTime2 = 0;
}
}
한번에 여러개의 오브젝트를 감지할 때
RaycastHit2D[] hit2 = Physics2D.RaycastAll(firePosition.transform.position, Vector3.right, rayDistance);
if (hit2.Length > 0)
{
foreach (var h in hit2)
{
h.collider.GetComponent<Enemy>().TakeDamage();
}
}