TIL

유니티(Unity) 점프대, 스피드대 구현하기

주전자123 2025. 3. 7. 21:16
320x100
반응형
SMALL

오늘은 밟았을때 점프하는 점프대, 스피드가 오르는 스피드대를 구현해보았다.

먼저

public float superJump;

점프대에 올랐을 때 얼마나 점프할 것인지 슈퍼점프변수를 만든다.

 

private void OnCollisionEnter(Collision collision)
{
    if (collision.gameObject.CompareTag("SuperJump"))
    {
        rb.AddForce(Vector3.up * superJump, ForceMode.Impulse);        
    }

}

그리고 콜리젼엔터에 슈퍼점프라는 태그를 달은 오브젝트에 닿았을 때 구현하도록 만든다.

 

스피드대를 만드는것도 간단하다. 코루틴을 사용해서 일정시간동안 스피드가 오르도록 하면 된다.

먼저

public float moveSpeed;

플레이어의 속도변수를 저장하고,

private float originalSpeed;

원래 속도를 저장할 변수도 저장한다.

 

그 다음 

스타트에서

 private void Start()
 {

    originalSpeed = moveSpeed;
 }

오리지널스피드에 내가 인스펙터에 입력한 스피드를 집어넣는다.

 

그리고 나서 

private void OnCollisionEnter(Collision collision)
{
    if (collision.gameObject.CompareTag("SuperSpeed"))
    {
    StartCoroutine(SuperSpeedBoost());
    }

}

 

코루틴을 실행할 SuperSpeedBoost 함수를 작성한다.

IEnumerator SuperSpeedBoost()
{    
    moveSpeed *= 2;
    yield return new WaitForSeconds(2f);
    moveSpeed = originalSpeed;
}

 

2초동안 속도가 2배로 오르고, 다시 원래 속도로 돌아가도록 작성했다.

이처럼 점프대와 스피드대는 이렇게 구현하면 성공!

실력이 미흡해서 코드를 직관적으로 쓰다보니 나름 쉬웠다.

728x90
반응형
LIST