Được nhấn trong khung hình này
Thuộc phần Xây dựng trò chơi thực tế trong hành trình Unity của Coddy. Bài học 46 trên 60.
isPressed trả lời câu hỏi “nút có đang được nhấn không?” ở mỗi khung hình khi giữ nút. Với thao tác chỉ nên xảy ra một lần mỗi lần nhấn, bộ điều khiển có thêm hai câu trả lời: wasPressedThisFrame chỉ là true trong khung hình phím hoặc nút được nhấn xuống, còn wasReleasedThisFrame chỉ là true trong khung hình phím hoặc nút được thả ra. Chúng thay cho Input.GetKeyDown và Input.GetKeyUp, cũng như GetMouseButtonDown và GetMouseButtonUp. Con dấu cao su này hạ xuống khi nhấn nút chuột và nhấc lên khi thả nút:
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;
}
}
}Nhấn chuột trong nửa giây sẽ ghi Stamp 1 một lần, đồng thời đưa con dấu xuống một lần rồi lên lại một lần. Nếu dùng isPressed trong if đầu tiên, cùng lần nhấn đó sẽ ghi khoảng 30 dấu và làm con dấu lún sâu 15 đơn vị vào bàn. Phím cũng hoạt động tương tự: Keyboard.current.spaceKey.wasPressedThisFrame là true một lần mỗi khi nhấn phím Space.
Thử thách
Trung bìnhCho vận động viên chạy nước rút xuất phát bằng phím Space: cúi xuống rồi đứng lên chạy.
- Trong
Update(), khi!runningvàKeyboard.current.spaceKey.wasPressedThisFrame: đặtset, di chuyển xuốngcrouch, ghi lạiSet. - Khi
setvàwasReleasedThisFrame: xóaset, đặtrunning, di chuyển lêncrouch, ghi lạiGo!. - Khi
running, di chuyển theo hướng +z với tốc độspeedđơn vị mỗi giây.
Nhấn Chơi, giữ phím Space rồi thả ra: trong Console sẽ hiện Set, rồi đến Go! Sau đó nhấn Kiểm tra.
Tự làm thử
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()
{
// Nhấn giữ Space: cúi người và ghi log Set. Thả Space: đứng dậy, ghi log Go! rồi chạy.
}
}
Tất cả bài học trong Xây dựng trò chơi thực tế
1Văn bản trên màn hình
Canvas và văn bảnHiển thị điểm sốĐịnh dạng sốĐồng hồ đếm ngượcÔn tập: Đồng hồ tốc độ7Điều khiển thời gian
Tạm dừng bằng timeScaleChuyển động chậmThời gian không bị co giãnÔn tập: Bullet Time2Nút bấm và màn hình
Nút bấm và onClickLambdaKết nối trong InspectorBật và tắt bảngThanh máuÔn tập: Cửa hàng nâng cấp5Lưu dữ liệu với PlayerPrefs
Lưu một sốTải với giá trị mặc địnhĐiểm cao nhấtLưu cài đặtÔn tập: Tiền xu trong ngân hàng3Trình quản lý trò chơi
Một script chạy trò chơiSingletonCác trạng thái trò chơiChuyển đổi trạng tháiÔn tập: Trình quản lý vòng chơi6Dự án: trò chơi chạy vô tận
Ba làn đườngChướng ngại vật phía trước9Hệ thống đầu vào mới
Hai hệ thống đầu vàoBàn phím và chuộtĐược nhấn trong khung hình nàyThao tác đầu vàoÔn tập: chuyển đổi đầu vàoTự luyện tập: Playground Unity