Giới thiệu
Bạn muốn bắt tương tác khi người dùng nhấn vào màn hình cảm ứng?
Bạn đã dùng Input.GetMouseButtonDown đôi khi bạn lại thấy đâu đó đoạn code người ta lại sử dụng Input.GetTouch(0). Và thế là bạn bối rối.
Mouse position và touch position
Nhấn
Để lấy mouse position bạn có thể làm như sau:
GetMouseButtonDown sử dụng cho việc bạn bấm vào màn hình, mouse position lúc đó là tọa độ bạn nhấn chuột xuống.
Input.mousePosition có kiểu dữ liệu là Vector3 giá trị z luôn bằng 0
Chạm
Còn đây là touch position
TouchPhase sử dụng để phát hiện bạn chạm vào màn hình. Nó phức tạp hơn vì màn hình cảm ứng có thể phát hiện nhiều điểm chạm bạn có thể cảm ứng đa điểm bằng nhiều ngón tay của mình. Vì vậy khi bạn nhận tọa độ cảm ứng bạn có thể quyết định cách bạn chạm vào để nhận được kết quả như mong muốn.
Bạn có thể tắt việc GetTouch
Bạn có thể bỏ qua việc GetTouch trong trường hợp bạn không nhấn vào màn hình bằng cách kiểm tra touchCount. Như ví dụ bên trên bạn có thể thấy câu lệnh if để kiểm tra touchCount lớn hơn 0 nó sẽ chỉ chạy vào nếu bạn nhấn vào màn hình Tức là touchCount lớn hơn hoặc bằng 1
Tọa độ chạm vào được lấy bằng thuộc tính position
Không giống như Input.mousePosition sẽ trả về điểm trung bình nếu bạn nhấn giữ nhiều ngón tay trên màn hình
Tọa độ chạm được tách riêng theo từng điểm chạm bạn có thể truy cập nó bằng hàm GetTouch và truyền index của điểm chạm vào
Một điểm khác nữa là touch position là một Vector2
Xác định bắt đầu chạm bằng TouchPhase
Để xác định xem có phải bạn vừa bắt đầu chạm vào hay không ta sử dụng TouchPhase.Began
Chuyển đổi
Vậy Input.GetMouseButtonDown sẽ nên dùng cho các thiết bị sử dụng chuột.
Còn đối với các thiết bị màn hình cảm ứng thì sẽ sử dụng touch
Bạn có thể sử dụng #if để chuyển đổi linh hoạt giữa chúng