Menu
CoddyTech

키보드와 마우스

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

Input System은 각 장치에 객체를 제공합니다. Keyboard.current는 키보드이고, 키보드의 각 키는 이름이 있는 컨트롤입니다. spaceKey, aKey, upArrowKey 또는 Key 값으로 어떤 키든 참조하는 Keyboard.current[Key.Space]가 있습니다. Mouse.current는 마우스이며, leftButton, rightButton 및 position을 갖습니다. 컨트롤의 isPressed는 키를 누르고 있는 모든 프레임에서 true이며, 이는 Input.GetKey와 같습니다. 이 잠수함은 방향키로 잠수하고 수면 위로 올라오며, 마우스 버튼을 누르고 있는 동안 탐조등을 켭니다.

using UnityEngine;
using UnityEngine.InputSystem;

public class Submarine : MonoBehaviour
{
    public float diveSpeed = 2f;
    public Light searchlight;

    void Update()
    {
        Keyboard keyboard = Keyboard.current;
        if (keyboard == null) return;   // 연결된 키보드가 없음

        if (keyboard.downArrowKey.isPressed)
            transform.position += Vector3.down * diveSpeed * Time.deltaTime;
        if (keyboard.upArrowKey.isPressed)
            transform.position += Vector3.up * diveSpeed * Time.deltaTime;

        searchlight.enabled = Mouse.current != null && Mouse.current.leftButton.isPressed;
    }
}

current는 마지막으로 사용한 장치이며, 해당 장치가 없으면 null입니다. 휴대전화나 콘솔에는 키보드가 없을 수 있으며, null 검사를 하면 그 환경에서 스크립트가 오류를 일으키지 않습니다. 키보드에는 축이 없으므로 아래쪽 화살표 키와 S 키는 별개의 키입니다. S 키를 눌러도 잠수해야 하는 잠수함이라면 keyboard.downArrowKey.isPressed || keyboard.sKey.isPressed를 검사합니다. Mouse.current.position.ReadValue()는 화면 왼쪽 아래 모서리에서 시작하는 화면 픽셀 좌표로 포인터를 반환하는 Vector2이며, Input.mousePosition과 같습니다.

challenge icon

챌린지

중급

Keyboard.current와 Mouse.current를 사용해 열기구를 조종하세요.

  1. rightArrowKey 또는 dKey를 누르고 있는 동안 isPressed가 참이면, 초당 drift 단위의 속도로 +x 방향으로 이동합니다. leftArrowKey 또는 aKey를 누르면 -x 방향으로 이동합니다.
  2. bool burner는 spaceKey 또는 leftButton을 눌렀는지를 나타냅니다. flame.SetActive(burner);를 호출하세요.
  3. 버너가 켜져 있으면 rise 속도로 상승하고, 꺼져 있으면 sink 속도로 하강하되 groundY보다 낮아지지 않게 하세요.

‘플레이’를 누르고 비행하세요. Space 또는 마우스 버튼을 누르고 있으면 상승합니다. 그런 다음 ‘확인’을 누르세요.

직접 해보기

using UnityEngine;
using UnityEngine.InputSystem;

public class Balloon : MonoBehaviour
{
    public float drift = 2f;
    public float rise = 3f;
    public float sink = 1f;
    public float groundY = 2f;
    public GameObject flame;

    void Update()
    {
        // 방향키 또는 A와 D로 이동하고, Space 또는 마우스로 불꽃을 켭니다
    }
}

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

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