게임에서 보통 기를 모아서 하는 액션들이 존재한다.
이번에는 기를 모아서 점프를 하는 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 |