이번 프레임에서 눌림
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가 됩니다.
챌린지
중급Space 키를 눌러 스프린터를 출발시키세요. 아래로 몸을 웅크리고, 위로 올라가 달립니다.
Update()에서!running이고Keyboard.current.spaceKey.wasPressedThisFrame일 때:set을 설정하고,crouch만큼 아래로 이동한 뒤,Set을 기록합니다.set이고wasReleasedThisFrame일 때:set을 해제하고,running을 설정하고,crouch만큼 위로 이동한 뒤,Go!를 기록합니다.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 플레이그라운드