게임개발 캠프 24일차

IIRU·2026년 6월 18일

Unity

delayTime

객체 오브젝트를 생성할 때나 작업을 하는데에 시간 간격을 두고 실행하고 싶을 때 사용.

방법1

if (Keyboard.current.spaceKey.wasPressedThisFrame && delayTime <= Time.time)
{
     Instantiate(bullet, firePosition.transform.position, firePosition.transform.rotation);
     //Time.time - 지금 시간
     delayTime = Time.time + attDelay;
}

방법2

delayTime2 += Time.deltaTime;
if (Keyboard.current.spaceKey.wasPressedThisFrame && delayTime2 >= attDelay)
{
    Instantiate(bullet, firePosition.transform.position, firePosition.transform.rotation);
    delayTime2 = 0;
}

Raycast

앞의 거리에 따라 오브젝트를 감지하여 정보를 저장하는 방법.

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();
     }
}
profile
초보 개발자 블로그입니다!

0개의 댓글