유니티(Unity) 점프대, 스피드대 구현하기
오늘은 밟았을때 점프하는 점프대, 스피드가 오르는 스피드대를 구현해보았다.
먼저
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배로 오르고, 다시 원래 속도로 돌아가도록 작성했다.
이처럼 점프대와 스피드대는 이렇게 구현하면 성공!
실력이 미흡해서 코드를 직관적으로 쓰다보니 나름 쉬웠다.