Bài này 3dvietpro hướng dẫn các bạn sử touch trong unity để tính toán tốc độ, lấy vị trí, và cách lắc màn hình để di chuyển đối tượngTouchPhase
+ Began: Ngón tay đã chạm vào màn hình
+ Moved: Di chuyển ngón tay trên màn hình
+ Stationary: Ngón tay chạm vào màn hình và không thực hiện di chuyển
+ Ended: Ngón tay rời khỏi màn hình, chạm kết thúc
+ Canceled: Hệ thống thoát chế độ chạm
VD 1:
Trích dẫn:
for (var i = 0; i < Input.touchCount; ++i) {
if (Input.GetTouch(i).phase == TouchPhase.Began)
}
VD 2:
Trích dẫn:
int nbTouches = Input.touchCount;
if(nbTouches > 0)
{
for (int i = 0; i < nbTouches; i++)
{
Touch touch = Input.GetTouch(i);
TouchPhase phase = touch.phase;
switch(phase)
{
case TouchPhase.Began:
print("New touch detected at position " + touch.position + " , index " + touch.fingerId);
break;
case TouchPhase.Moved:
print("Touch index " + touch.fingerId + " has moved by " + touch.deltaPosition);
break;
case TouchPhase.Stationary:
print("Touch index " + touch.fingerId + " is stationary at position " + touch.position);
break;
case TouchPhase.Ended:
print("Touch index " + touch.fingerId + " ended at position " + touch.position);
break;
case TouchPhase.Canceled:
print("Touch index " + touch.fingerId + " cancelled");
break;
}
}
}
Tính tốc độ của chạm Sử dụng detatime để tính toán và di chuyển tốc độ của ngón tay
Trích dẫn:
float touchSpeed = touch.deltaPosition.magnitude / touch.deltaTime;
Lấy vị trí của màn hìnhTrích dẫn:
Vector3 position = Camera.main.ScreenToWorldPoint(touch.position);
tapCount
if (Input.touchCount > 0) {
Debug.Log("ONE TAP");
if(Input.GetTouch(0).tapCount == 2)
Debug.Log("DOUBLE TAP");
}
Input.accelerationSử dụng để lắc màn hình theo chiều đã định (Chiều x, y) tương tự khi chúng ta sử dụng Horizontal và vertical trong unity thay cho chiều x, y khi chúng ta dùng acceleration
Các sử dụng:
VD 1:
Trích dẫn:
int tiltDirection = Input.acceleration.x > 0 ? 1 : -1;
thisTranfrom.position = new Vector3( Mathf.Clamp(thisPosition.x,-2.4f,2.4f),thisPosition.y,thisPosition.z);
với Input.acceleration.x các bạn lắc màn hình theo chiều ngang, và Input.acceleration.y dùng để lắc màn hình theo chiều dọc.