Menu
CoddyTech

이번 프레임에서 눌림

Coddy Unity 여정의 실제 게임 만들기 섹션에 포함된 레슨. 60개 중 46번째.

isPressed는 키를 누르고 있는 동안 매 프레임마다 “지금 눌려 있나요?”라는 질문에 답합니다. 한 번 누를 때 한 번만 실행되어야 하는 동작을 위해 컨트롤에는 두 가지 답이 더 있습니다. wasPressedThisFrame은 키나 버튼을 누른 프레임에만 true이고, wasReleasedThisFrame은 키나 버튼에서 손을 뗀 프레임에만 true입니다. 이들은 Input.GetKeyDown 및 Input.GetKeyUp, 그리고 GetMouseButtonDown 및 GetMouseButtonUp을 대신합니다. 이 고무 도장은 마우스 버튼을 누르면 내려가고 손을 떼면 올라옵니다:

using UnityEngine;
using UnityEngine.InputSystem;

public class Stamp : MonoBehaviour
{
    public float drop = 0.5f;
    private int stamps;

    void Update()
    {
        Mouse mouse = Mouse.current;

        if (mouse.leftButton.wasPressedThisFrame)
        {
            transform.position += Vector3.down * drop;
            stamps++;
            Debug.Log("Stamp " + stamps);
        }
        if (mouse.leftButton.wasReleasedThisFrame)
        {
            transform.position += Vector3.up * drop;
        }
    }
}

반 초 동안 누르고 있는 클릭은 Stamp 1을 한 번 기록하고, 도장을 한 번 아래로 내렸다가 한 번 올립니다. 첫 번째 if에서 isPressed를 사용하면 같은 클릭으로 도장이 약 30번 기록되고 도장은 책상 안으로 15단위만큼 내려갑니다. 키도 같은 방식으로 작동합니다. Keyboard.current.spaceKey.wasPressedThisFrame은 스페이스 키를 누를 때마다 한 번만 true가 됩니다.

challenge icon

챌린지

중급

Space 키를 눌러 스프린터를 출발시키세요. 아래로 몸을 웅크리고, 위로 올라가 달립니다.

  1. Update()에서 !running이고 Keyboard.current.spaceKey.wasPressedThisFrame일 때: set을 설정하고, crouch만큼 아래로 이동한 뒤, Set을 기록합니다.
  2. set이고 wasReleasedThisFrame일 때: set을 해제하고, running을 설정하고, crouch만큼 위로 이동한 뒤, Go!를 기록합니다.
  3. running인 동안 초당 speed 단위로 +z 방향을 따라 이동합니다.

‘플레이’를 누르고 Space 키를 누른 채로 있다가 놓으세요. Console에 Set, 그다음 Go!가 표시됩니다. 그런 다음 ‘확인’을 누르세요.

직접 해보기

using UnityEngine;
using UnityEngine.InputSystem;

public class Sprinter : MonoBehaviour
{
    public float speed = 6f;
    public float crouch = 0.3f;

    private bool set;
    private bool running;

    void Update()
    {
        // Space 누름: 웅크리고 Set을 로그에 기록. Space 뗌: 일어서서 Go!를 로그에 기록하고 달리기.
    }
}

실제 게임 만들기의 모든 레슨

직접 연습해 보세요: Unity 플레이그라운드