본문 바로가기

Unity/Unity2D

Unity2D_Week1 : ChargeJump

게임에서 보통 기를 모아서 하는 액션들이 존재한다.

이번에는 기를 모아서 점프를 하는 ChargeJump를 구현해보고자 한다.

public float jumpPower;

void Update()
{
    chargeJump();
}

private void ChargeJump()
{
    // 점프 준비
    if (Input.GetKeyDown(KeyCode.Space))
    {
        // 버튼을 누른 즉시 charge 값이 0.0으로 초기화.
        charge = 0.0f;                      
    }

    // 기 모으기
    if (Input.GetKey(KeyCode.Space))
    {
        // 버튼을 누르는 동안 charge에 시간 값 더함.
        charge += Time.deltaTime;           
    }

    // 점프 실행 단계
    if (Input.GetKeyUp(KeyCode.Space))
    {
        charge = Mathf.Clamp(charge, 0.3f, 1.0f);
        
        // Vector2 = 방향으로 charge의 비율 만큼 곱함.
        rigid.AddForce(Vector2.up * jumpPower * charge, ForceMode2D.Impulse);     
    }

}

※ Time.deltaTime

: 프레임과 프레임 사이의 간격시간.

 

※ Mathf.Clamp()

Mathf.Clamp(값, 최소값, 최대값) : 최소, 최대 사이 값으로 고정 후 반환.

charge = Mathf.Clmap(charge, 0.3f, 1.0f)를 풀어서 선언하자면,

if (charge > 1.0f) charge = 1.0f; // 만약 charge값이 1.0f 이상이라면, 1.0f로 고정.

if (charge < 0.3f) charge = 0.3f; // 초기 점프값이 너무 낮기 때문에 거는 if문.

 

'Unity > Unity2D' 카테고리의 다른 글

Unity2D_Week2 : Property  (0) 2021.12.09
Unity2D_Week1 : Coroutine  (0) 2021.12.06
Unity2D_Week1 : Raycast  (0) 2021.12.06
Unity2D_Week1 : Jump  (0) 2021.12.06
Unity2D_Week1 : Move  (0) 2021.12.06