Nhấn và chạm trên Mobile

Nhấn và chạm có gì khác nhau? Nếu bạn mơ hồ về nó hãy cùng tìm hiểu nhé!

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

Lượt nghé thăm