Menu
CoddyTech

눌림, 유지, 해제

Coddy Unity 여정의 Unity 스크립팅 기초 섹션에 포함된 레슨. 67개 중 12번째.

Unity는 키에 대해 세 가지 서로 다른 정보를 알려줄 수 있으며, 각 정보는 Update()에서 확인합니다:

  • Input.GetKeyDown(KeyCode.Space): 이번 프레임에 Space 키를 눌렀나요? 한 번 누를 때 프레임 하나에서만 true입니다.
  • Input.GetKey(KeyCode.Space): 지금 Space 키를 누르고 있나요? Space 키를 누르고 있는 동안 매 프레임 true입니다.
  • Input.GetKeyUp(KeyCode.Space): 이번 프레임에 Space 키를 뗐나요? 키를 놓는 프레임 하나에서만 true입니다.

초당 60프레임으로 0.5초 동안 Space 키를 누르고 있으면, GetKey는 30개 프레임에서 true이고, GetKeyDown은 그중 첫 번째 프레임에서, GetKeyUp은 마지막 프레임 다음 프레임에서 true입니다. 한 번 누를 때 한 번 발사하는 대포라면 GetKeyDown을 확인합니다. GetKey를 사용하면 한 번 눌렀을 때 30발이 발사됩니다:

public int shots = 0;

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        shots++;
        Debug.Log("Shots fired: " + shots);
    }
}

GetKeyUp은 플레이어가 키를 놓을 때 일어나는 동작에 사용합니다. 예를 들어 달리기가 끝나는 경우입니다. 세 가지 모두 현재 프레임에 대해서만 답하므로 Update()에서 확인해야 합니다. Update()는 매 프레임 실행되지만 Start()는 한 번만 실행되므로 거의 모든 키 입력을 놓치게 됩니다.

challenge icon

챌린지

쉬움

스페이스 키를 누르고 있는 동안 새총이 충전됩니다. 스페이스 키를 누르고 있는 매초마다 charge가 1씩 증가하고, 누르고 있지 않을 때는 증가하지 않습니다. 스페이스 키에서 손을 떼면 Charge: 뒤에 충전량을 기록한 다음(예: Charge: 1.5), 다음 발사를 위해 charge를 다시 0으로 설정하세요.

플레이를 누르고 스페이스 키를 누른 다음 손을 떼면서 콘솔을 확인하세요. 그런 다음 확인을 누르세요.

직접 해보기

using UnityEngine;

public class Slingshot : MonoBehaviour
{
    float charge = 0f;

    void Update()
    {
        // Space를 누르고 있는 동안: charge가 매초 1씩 증가합니다.
        // Space에서 손을 떼면: charge를 로그에 기록한 다음 0으로 되돌립니다.
    }
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Unity 스크립팅 기초의 모든 레슨