키보드와 마우스
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과 같습니다.
챌린지
중급Keyboard.current와 Mouse.current를 사용해 열기구를 조종하세요.
rightArrowKey또는dKey를 누르고 있는 동안isPressed가 참이면, 초당drift단위의 속도로 +x 방향으로 이동합니다.leftArrowKey또는aKey를 누르면 -x 방향으로 이동합니다.bool burner는spaceKey또는leftButton을 눌렀는지를 나타냅니다.flame.SetActive(burner);를 호출하세요.- 버너가 켜져 있으면
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 플레이그라운드