logo
Khóa học lập trình game server - smartfox - game đa người chơi Học lập trinh game online 3dvietpro Sửa chữa và thiết kế website .net
Welcome Guest! To enable all features please Đăng nhập or Đăng ký.

Thông báo

Icon
Error

Tùy chọn
Xem
Xem bài viết cuối Go to first unread
admin  
#1 Đã gửi : 14/06/2015 lúc 11:03:15(UTC)
admin

Danh hiệu: Administration

Nhóm: Guests
Gia nhập: 19-08-2014(UTC)
Bài viết: 145

Được cảm ơn: 7 lần trong 6 bài viết
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ượng

TouchPhase
+ 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ình
Trí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.acceleration

Sử 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.
Bạn bình luận ngay tại đây
Ai đang xem chủ đề này?
Guest
Di chuyển  
Bạn không thể tạo chủ đề mới trong diễn đàn này.
Bạn không thể trả lời chủ đề trong diễn đàn này.
Bạn không thể xóa bài của bạn trong diễn đàn này.
Bạn không thể sửa bài của bạn trong diễn đàn này.
Bạn không thể tạo bình chọn trong diễn đàn này.
Bạn không thể bỏ phiếu bình chọn trong diễn đàn này.

Powered by YAF 2.1.0 | YAF © 2003-2024, Yet Another Forum.NET
Thời gian xử lý trang này hết 0.063 giây.