Danh hiệu: Administration
Nhóm: Gia nhập: 20-08-2014(UTC) Bài viết: 60
Cảm ơn: 2 lần Được cảm ơn: 2 lần trong 2 bài viết
|
mình trích dẫn Đây là bài viết của bạn minh3d bên unityviet. ============================================================== Giới thiệu: Itween là một hệ thống giúp tạo hiệu ứng(Animation) đơn giản, mạnh mẽ và dễ sử dụng cho Unity. tác giả bài viết: đậu tài.
Cụ thể, “Khi muốn thay đổi một giá trị trong một khoảng thời gian nhất định, với itween bạn chỉ cần đưa các tham số đầu vào(giá trị đầu, giá trị cuối – mong muốn) cùng với khoảng thời gian để thay đổi, việc tạo hiệu ứng sẽ hoàn toàn được Itween thực hiện trong đúng khoảng thời gian đó.”
Ví dụ, bạn muốn di chuyển một GameObject của Unity từ vị trí này sang vị trí kia, bạn chỉ cần đưa vào Itween GameObject cần di chuyển + vị trí đích + khoảng thời gian di chuyển, sau đó GameObject sẽ tự động di chuyển đến vị trí đích trong khoảng thời gian chỉ định!
(Sử dụng Itween cứ như làm đạo diễn phim ấy :))
Hướng dẫn sử dụng các hàm chính trong Itween + Ví dụ thực tế:
– Di chuyển đối tượng từ vị trí ban đầu đến vị trí mới trong 2 giây:
C#:
iTween.MoveTo(gameObject,Vector3(2,0,0),2); // gameObject- đối tượng, Vector3 - vị trí mới, 2 - thời gian
+ bạn có thể tùy biến thêm các thông số như độ trễ(delay), lặp(loop),callback function… với bảng Hashtable: C#:
iTween.MoveTo(gameObject,{"x":3,"time":4,"delay":1,"onupdate","myUpdateFunction","looptype","pingpong"}); // x - vị trí x mới, time - thời gian thực hiện di chuyển, onupdate - hàm gọi trong khi cập nhật một vị trí mới
Bảng Hashtable trên có thể được tạo bằng cách rõ ràng hơn như sau:
C#:
1 2 3 4 5 6 Hashtable ht = new Hashtable(); ht.Add("x",3); ht.Add("time",4); ht.Add("delay",1); ht.Add("onupdate","myUpdateFunction"); ht.Add("looptype",iTween.LoopType.pingPong);
Sau đó gọi :
C#:
1 iTween.MoveTo(gameObject,ht);
Cách khác:
C#:
iTween.MoveTo(gameObject,iTween.Hash("x",3,"time",4,"delay",1,"onupdate","myUpdateFunction","looptype",iTween.LoopType.pingPong));
Di chuyển trên đường cong( Bạn có thể phải mất vài ngày xoay sở với các công thức hoặc thuật toán phức tạp nếu không sử dụng itween):
+ Để thực hiện việc GameObject di chuyển trên đường cong bạn có thể sử dụng 2 hàm sau:
* MoveBy(GameObject target, Vector3 amount, float time)/MoveBy(GameObject target, Hashtable args) * MoveTo(GameObject target, Vector3 position, float time)/MoveTo(GameObject target, Hashtable args)
Ví dụ: C#:
iTween.MoveBy(gameObject, iTween.Hash("y", lobHeight, "time", lobTime/2, "easeType", iTween.EaseType.easeOutQuad)); // Tăng y của gameObject thêm y = lobHeight trong thời gian lobTime/2 với EaseType là EaseType.easeOutQuad iTween.MoveBy(gameObject, iTween.Hash("y", -lobHeight, "time", lobTime/2, "delay", lobTime/2, "easeType", iTween.EaseType.easeInCubic)); // Thêm y của gameObject thêm y = -lobHeight(quay về độ cao cũ) trong thời gian lobTime/2 với EaseType là EaseType.easeInCubic // delay lobTime/2 để hiệu ứng bên trên được thực hiện xong mới thực hiện hiệu ứng này //Hàm MoveBy chỉ thực hiện thay đổi các tọa độ của gameObject chứ không thay đổi vị trí iTween.MoveTo(gameObject, iTween.Hash("position", targetPosition, "time", lobTime, "easeType", iTween.EaseType.linear)); // Di chuyển gameObject đến vị trí targetPosition trong khoảng thời gian lobTime //nếu nếu muốn dùng MoveBy thì các bạn có thể dùng theo kiểu: iTween.MoveBy(gameObject, iTween.Hash("x", targetPosition.x, "y", targetPosition.y, "z", targetPosition.z, "time", lobTime, "easeType", iTween.EaseType.linear)); iTween.FadeTo(gameObject, iTween.Hash("delay", 3, "time", .5, "alpha", 0, "onComplete", "CleanUp")); // Cái này để hủy Object(gọi hàm CleanUp sau khi di chuyển đến đích- onComplete) sau khi di chuyển xong mờ dần( tùy nhu cầu :v)
Việc tạo đường đi cong cho gameObject các bạn có thể tùy chỉnh theo tưởng tượng. hãy thử nghiệm thay đổi các thông số để hiểu thêm về cách sử dụng các hàm trên.Sửa bởi người viết 29/09/2014 lúc 11:03:05(UTC)
| Lý do: Chưa rõ
|