Nhấn, giữ, thả
Thuộc phần Những kiến thức cơ bản về lập trình trong Unity trong hành trình Unity của Coddy. Bài học 19 trên 85.
Unity có thể cho bạn biết ba điều khác nhau về một phím, và mỗi điều được kiểm tra trong Update():
Input.GetKeyDown(KeyCode.Space): phím Space có được nhấn trong khung hình này không? Giá trị này là true trong một khung hình cho mỗi lần nhấn.Input.GetKey(KeyCode.Space): hiện tại phím Space có đang được nhấn không? Giá trị này là true trong mọi khung hình khi bạn giữ phím Space.Input.GetKeyUp(KeyCode.Space): phím Space có được thả ra trong khung hình này không? Giá trị này là true trong một khung hình, khi phím được thả.
Giữ phím Space trong nửa giây ở tốc độ 60 khung hình mỗi giây, và GetKey sẽ là true trong 30 khung hình, GetKeyDown là true ở khung hình đầu tiên trong số đó, còn GetKeyUp là true ở khung hình sau khung hình cuối cùng. Một khẩu pháo chỉ bắn một lần mỗi lần nhấn sẽ kiểm tra GetKeyDown; nếu dùng GetKey, một lần nhấn sẽ bắn 30 phát:
public int shots = 0;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
shots++;
Debug.Log("Shots fired: " + shots);
}
}GetKeyUp dùng để xử lý những việc xảy ra khi người chơi thả phím, chẳng hạn như kết thúc chạy nước rút. Cả ba chỉ trả lời cho khung hình hiện tại, đó là lý do chúng thuộc về Update(): hàm này chạy trong mọi khung hình, còn Start() chỉ chạy một lần nên sẽ bỏ lỡ gần như mọi lần nhấn.
Thử thách
DễCây ná cao su tích lực khi bạn giữ phím Space và báo lực bắn khi bạn thả phím.
- Trong
Update(), khiInput.GetKey(KeyCode.Space)là true, hãy cộngTime.deltaTimevàocharge. - Khi
Input.GetKeyUp(KeyCode.Space), hãy ghi"Charge: " + chargevào nhật ký, sau đó đặtchargethành 0.
Nhấn Chơi, giữ phím Space rồi thả ra: Console hiển thị một dòng như Charge: 1.5. Sau đó nhấn Kiểm tra.
Tự làm thử
using UnityEngine;
public class Slingshot : MonoBehaviour
{
float charge = 0f;
void Update()
{
// Khi giữ phím Space: charge tăng thêm 1 mỗi giây.
// Khi thả phím Space: ghi charge vào nhật ký, rồi đặt lại thành 0.
}
}
Tất cả bài học trong Những kiến thức cơ bản về lập trình trong Unity
1C# cơ bản trong Unity
Xin chào, UnityBiếnSố thập phân cần có fVăn bản trong ConsoleBiến có thể ghi nhớIf và elseSo sánh các sốÔn tập: Thu thập xu7Vòng lặp và phương thức
Lặp lại với forVòng lặp lồng nhauViết phương thứcPhương thức trả lờiMảngÔn tập: Cầu thang2Làm cho nó chuyển động
Đặt khối lập phươngDi chuyển theo từng khung hìnhXoay mỗi giâyĐiều khiển bằng các phímÔn tập: Lái khối lập phương5Vectơ
Cộng vectơPhương hướngKhông gian cục bộ và không gian thế giớiTốc độ theo đường chéoKhoảng cách giữa các vậtVector3 là một structÔn tập: Người điều khiển drone8GameObject và thành phần
Tham chiếu trong InspectorLấy một thành phầnThành phần bị thiếuThêm một thành phầnRequireComponentHiện và ẩnÔn tập: Công tắc đèn3Inspector
Các trường trong InspectorSerializeFieldSố thực và MathfThuộc tính trong InspectorÔn tập: thang máy6Biến đổi và hệ phân cấp
Đối tượng cha và conKéo cờ lênTỷ lệNhìn vào các vật thểDi chuyển đến một điểmÔn tập: Mặt trăng quay quanh9Dự án: Bắt lấy ngôi sao
Người bắt saoNgôi sao rơiTự luyện tập: Playground Unity