Header ads

Header ads
» » » » Tổng quan về Unity 3d

I. Giới thiệu về Unity3d

Unity3D là phần mềm làm games trực tiếp theo thời gian thực, mà không cần render, cho phép người  design game có thể thiết kế InterfaceGraphic, map hay character … từ một phần mềm thứ 2 (thường là các phần mềm thiết kế đồ họa chuyên nghiệp như 3Dsmax, Blender, Maya, XSL,Cinema4D,Cheetah3D, Modo, Autodesk FBX, LightWave…) sau đó chỉ việc import nó vào trong Unity với định dạng của tập tin là *.FBX hay *.dae, *.3DS, *.dxf và *.obj, nhưng định dạng *.FBX hay được dùng vì được tối ưu hóa hơn, còn dùng các định dạng khác ngoài FBX thì phải cài phần mền thiết kế character tưng ứng thì mới dùng được (tức là dùng Maya có định dạng *.mb, *.ma thì muốn dùng được phải cài Maya)
Ngoài ra khi bạn design được một game thì bạn có thể xuất được ra một file.exe và có thể chạy và chơi được trên PC khác.
Một thế mạnh nữa của Unity là bạn có thể chạy demo game của bạn ngay trongkhi design, nó có hỗ trợ hai chế độ là Scene và Game, rất thuận tiện cho việc test thử các modulGame.
Unity3D có 2 loại phiên bản, một cho người dùng free, và một phiên bản pro thì mất phí.
Khi tải Unity về các bạn cài đặt bình thường, đến khi kết thúc cài đặt nền các bạn chọn phiên bản Pro thì cần phải mua, còn nếu là người dùng free thì các bạn chọn kích  hoạt qua web, chỉ cần có kết nối mạng internet, sau đó chọn cài đặt thủ công và nhập mail, chọn free là bạn có thể sử dụng một bản Unity free.


II. Giới thiệu về giao diện Unity3D.
Sau khi cài đặt Unity thành các bạn khởi  động Unity:
-         Đối với Window: Start -> Program -> Unity, hoặc chọn biểu tượng Unity trên screen.
-         Đối với người dùng MacOs: Application -> Unity
Sau khi khởi động Unity cửa sổ Editor xuất hiện: Cửa sổ Editor của Unity gồm nhiều Tab gọi là các view, và ta có thể tùy ý kéo thả sắp xếp các view theo ý thích.
 1.     Cửa sổ project:
Mỗi Project của Unity đều chứa một thư mục Assets.Nội dung của thư mục này được hiển thị trong Project View. Đây là nơi chứa tất cả các assets để tạo Game của bạn như Scenes, Script, 3D models, Textures, Audio, Prefabs. Chúng ta không nên di chuyển asseets bằng cách sử dụng  Window Explorer (hay Finder trong MAC), vì nó sẽ phá vỡ cấu trúc siêu dữ liệ của assets với nhau, và luôn sử dụng Project View để cấu trúc assets của mình.
Để thêm assets vào project của mình, chúng ta có thể kéo thả bất kỳ file nào vào trong project view hoặc vào công cụ Assets – Import new Assets(Click chuột phải vào Project View). Scenes cũng được lưu trữ trong Project view, và đây là một level độc lập mang tính cá nhân. Chúng ta dễ dàng tạo một assets game trong Unity bằng cách chọn hình tam giác nhỏ nằm bên phải Create trong cửa sổ Project hoặc click chuột phải trong Project View, sau đó chọn assets tương ứng.
Ngoài ra bạn cũng có thể thêm các assets và đổi tên các assets một cách dễ dàng.
2. Hierarchy
Tức là hệ thống phân cấp
Trong Hierarchy  chứa các GameObject hiện thời, một số có thể trỏ trực tiếp tới những file assets như 3D models, một số khác đại diện cho Prefabs – những đối tượng đã được tùy biến, dùng làm các công việc khác nhau sau này trong Game của bạn. Bạn có thể chọn và parenting Object trong Hierarchy . Một Object có thể được thêm vào hay loại bỏ trong scene và có thể thấy nó mất đi hay xuất hiện trong Hierarchy .

3. Parenting.
          Tức là thư mục chứa hay thư mục gốc, bất kỳ một game object nào muốn là đối tượng con(child) thì ta chỉ việc kéo thả đối tượng đó vào trong đối tượng dự tính làm Parenting trong Hierarchy  và nó sẽ kế thừa chuyển động và quay của parenting.

4. Toolbar.
Toolbar chứa 5 loại điều khiển cơ bản, mỗi loại giữ một vai trò quan trọng trong Editor.
A:  Transform Tool: được dung với Scene view, như quay trái , phải, lên trên, xuống dưới, phóng to thu nhỏ đối tượng.
B:  Transform Gizmo Toggles: dung cho việc thể hiện Scene view.
C:  Play/Pause/Step Buttons: dung cho view game, chỵ game ngay trong Editor để kiểm tra.
D: Layer Drop-down kiểm soát đối tượng nào đang được thục hiện trong Scene view
E:  Layout Drop-down kiểm soát sự sắp xếp cảu các Views.

5. Scene View.
Là nơi bạn Design Game của bạn, đối tượng Maneuvering và Importanting trong Scene view (chuyển động và điều khiển) là hai trong số các chức năng quan trọng của Unity, ở góc bên phải của Scene là Scene Gizmo, nó thể hiện hướng nhìn trong không gian của camera trong Scene View hiện thời, cho phép thay đổi góc nhìn trực quan và nhanh chóng.
         Click lên các nhánh hình nón để chuyển qua các góc nhìn khác nhau có thể xem ở chế độ Isometric Model(tức ở dạng mặt cắt hai chiều), để chuyển qua chế độ 3D bạn Click vào hình vuông ở giữa hay giữ phím Shift + Click để chuyển đổi chế độ nhìn.
Khi xây dựng một Game, bạn sẽ đặt rất nhiều đối tượng vào trong Game của bạn. Bạn có thể dử dụng các công cụ Transform Tools ở trong Toolbar để di chuyển, xoay, phóng to tu nhỏ từng đối tượng.Khi bạn chọn một đối tượng trong Scene View, xung quanh đối tượng được chọn sẽ có những thay đổi tương ứng với từng chế độ trong Transform Tools.Sau đó bạn thay đổi đối tượng tùy ý, nếu muốn chính xác bạn có thể chỉnh chi tiết ở bảng Inspector.
Scene View Control Bar
Thanh điều khiển Scene view cho phép bạn xem screen Game với nhiều chế độ như đã phủ vật liệu (material), khung lưới(wireframe), RGB, Overdraw, …Bạn cũng có thể xem và cả nghe những hiệu ứng ánh sáng, âm thanh, những thành phần động trong Game… ngay tại Scene.
6. Game View.
Game View được rendered từ những Camera trong Game. Đó là những gì được nhìn thấy khi hoàn tất, khi Game được xuất bản. Bạn sẽ cần ít nhất là một hoặc nhiều hơn số lượng các Camera để quết định những gì mà người chơi sẽ nhìn thấy khi họ chơi Game.
7. Play Mode
Sử dụng những nút trên Toolbar để điều khiển Editor Play Mode, và xem trước Game của bạn sẽ như thế nào khi chơi. Trong chế Play, mọi giá trị thay đổi sẽ được lưu tạm, và bị xóa khi thoát khỏi chế độ play.
8. Inspector
      Games trong Unity được tạo ra bởi tập hợp rất nhiều GameObject, trong đó bao gồm meshes, scripts, âm thanh, hay những đối tượng Graphic như nguồn sáng v..v... Inspector sẽ hiển thị mọi thông tin về đối tượng đang làm việc một cách chi tiết, kể cả những Components được đính kèm và những thuộc tính của nó. Tại đây bạn có thể điều chỉnh, thiết lập mọi thông số chức năng của những mối liên kết GameObject-Component.
        Mọi thuộc tính thể hiện trong Inspector đều có thể được tùy biến một cách trực tiếp. Ngay cả với những biến trong script cũng có thể được hiệu chỉnh mà không cần xem mã. Trong script, nếu bạn định nghĩa một giá trị là public cho một kiểu đối tượng (như GameObject hay Transform), bạn có thể drag-drop một GameObject hay một Prefab vào trong Inspector để gán giá trị cho nó.
Chúng ta có thể click lên icon hình bánh răng nhỏ bên phải hay click chuột phải lên tên cảu Component để xuất hện context menu dành cho những thiết lập của Component.
Inspector cũng sẽ thể hiện mọi thông số Import Setting của assets đang làm việc.
9. Tùy biến không gian làm việc

Bạn có thể tùy ý thay đổi cấu trúc của các Views bằng cách click-dragging những tab tới những nơi bạn muốn. Đặt cạnh một View nào đó, nó sẽ tự phân chia windows ra, đặt ra ngoài nó sẽ tự động tạo thành một windows riêng. (dịch thoáng).

Views có thể được đặt bên cạnh bên, hay bên dưới bất kỳ cửa sổ nào.

       Các tab cũng có thể kéo ra ngoài cửa sổ chính và được sắp xếp theo ý thích người dùng. Nếu cần thiết, bạn cũng có thể cho nó nằm ngang hàng với các Views khác trong cửa sổ chính.

View được kéo nổi lên, tách biệt hẳn với các cửa sổ View khác.
         Bạn cũng có thể lưu lại những thiết lập về cấu trúc của các Views, bằng cách click vào menu Dropdown Layout ở thanh Toolbar, chọn Save Layout... Đặt tên cho nó và sau đó bạn dễ dàng gọi nó ra bằng cách chọn nó trong Dropdown Menu Layout.

Một Layout đã hoàn toàn được chỉnh sửa

         Bất kỳ lúc nào bạn cũng có thể right-click lên một tab của bất kỳ view nào để xem những tính năng khác như Maximize hay thêm vào một tab mới trong cùng một cửa sổ.
10. Quản lý Asset.
Workflowlà “tiến trình công việc” hay “quy trình làm việc”, tức là khi bạn import hoặc tạo ra asset, bạn không cùng một lúc tạo ra toàn bộ, mà là theo trình tự, tùy theo nhu cầu, theo kịch bản, bạn import hoặc tạo ra asset theo thứ tự.
Tạo một Asset thô
Unity hỗ trợ import hầu như tất cả các định dạng 3D model hiện nay. Khi một đối tượng hay vật thể 3D được import hoặc tạo ra trong Unity, nó đều được gọi là asset.
Import
          Khi lưu trữ asset, nên lưu trong thư mục Assets đặt trong thư mục Project của bạn. Lúc mở project, Unity sẽ tự động dò tìm và import tất cả vào trong Project.

Import Settings
       Khi bạn chọn một asset trong Project View, những thông số import cho asset sẽ hiển thị ở Inspector. Mỗi loại asset sẽ có mỗi kiểu thông số khác nhau.

Thêm Asset vào trong Scene
         Chỉ cần click-drag các khung lưới được vẽ trong 3D (mesh) từ Project View vào cửa sổ Hierarchy  hoặc Scene View để thêm nó vào trong Scene. Khi thêm một mesh vào trong scene, tức là bạn đã tạo ra một GameObject có Mesh Renderer Component. Tương tự khi thêm vật liệu, hoặc âm thanh, bạn cũng phải gán nó vào một GameObject đã có sẵn trong Scene hay Project.

Sử dụng các kiểu Assets khác nhau
Mối liên hệ giữa một số kiểu assets thông dụng:
  • Một Texture(kết cấu) được áp cho một Material(vật liệu).
  • Một Material được áp cho một GameObject (với một Mesh Renderer Component)
  • Một Animation được áp cho một GameObject (với một Animation Component)
  • Một file âm thanh được áp cho một GameObject (với một Audio Source Component)
Tạo một Prefab

        Prefabs là một tính năng hữu ích trong Unity, nó là một bộ sưu tập của nhiều GameObject và Components mà có thể được dùng lại nhiều lần trong scene. Nhiều đối tượng riêng biệt có thể được tạo ra chỉ bằng một Prefab, được gọi là Intance.

       Lấy ví dụ những cái cây trong game. Ta tạo ra một Prefab cho cây, sau đó có thể thêm nó vào trong game để tạo thành một vườn cây. Bởi vì tất cả cây đều cùng một Prefab, nên sau này, nếu bạn cần thay đổi màu lá, màu vỏ cây v..v... cho toàn bộ vườn cây, bạn chỉ cần đơn giản hiệu chỉnh thông số trong Prefab, sau đó áp nó cho toàn bộ đối tượng bằng cách chọn GameObject->Apply Changes to Prefab từ menu chính.

      Thật dễ dàng và nhanh chóng, Prefab sẽ giúp bạn tiết kiệm rất nhiều thời gian trong việc quản lý và hiệu chỉnh asset.

      Tưởng tượng Prefab như là một khung sườn, một khuôn mẫu. Nghĩa là khi Prefab thay đổi, tất cả những bản sao sẽ được cập nhật theo. Có nhiều cách để thay đổi, như bạn có thể thay đổi chính từ Prefab gốc, hoặc từ những bản sao của nó rồi áp ngược lại cho toàn bộ Prefab.

       Để tạo ra một Prefab từ một GameObject trong scene, đầu tiên, khởi tạo trước một Prefab mới trong Project View, đặt tên cho Prefab đó theo ý bạn thích, sau đó, click và drag đối tượng GameObject mà bạn muốn nó trở thành một Prefab vào trong Prefab, khi đó tên của GameObject sẽ chuyển sang xanh dương.
Cập nhật Assets
       Bạn đã làm quen với việc import, thay đổi, và liên kết asset trong một Prefab. Giờ bạn muốn có một chút thay đổi với asset? Chỉ cần double-click nó trong Project View. Chương trình chỉnh sửa tương ứng sẽ chạy và bạn có thể chỉnh sửa theo ý thích, khi hoàn tất, chỉ cần save nó lại, Unity sẽ tự động nhận biết sự thay đổi và import lại asset đó một cách nhanh chóng. Những asset liên kết trong Prefab cũng sẽ thay đổi theo.

        Ví dụ bạn thêm một bảng hiệu trong game bằng file Photoshop. Double-click lên nó, Photoshop sẽ chạy, bạn chỉnh sửa bảng hiệu trong Photoshop, save lại. Quay lại Unity, bạn sẽ thấy nó đã thay đổi, thật tiện lợi phải không nào?
Optional - Đính thêm Labels cho Assets.
      Thêm labels cho những asset quả không là một ý tưởng tồi nếu bạn muốn giữ nó ngăn nắp, nhằm làm cho việc tìm kiếm và quản lý, sử dụng nó dễ dàng hơn.
Các bước đính thêm label cho asset:
  • Chọn asset mà bạn muốn thêm label. (Bằng project view).
  • Trong cửa sổ Inspector click lên biểu tượng "Add Label" nếu bạn chưa có label nào trước đó.
  • Nếu asset đã có label rồi, click vào đó.
  • Gõ label vào đó.
Ghi chú:
  • Bạn có thể đính nhiều label cho một asset.
  • Để ngăn cách, hay tạo mới label khác, chỉ cần dùng khoảng trắng space bar hay enter và viết tiếp label khác.
11. Khởi tạo Scene.
Scene chứa tất cả các đối tượng trong Game, nó thường được dùng để tạp màn hình chính trong game, những level độc lập, và mọi thứ khác trong game. Tức là mỗi Scene là một tầng độc lập, và trong mỗi Scenen bạn có thể lập môi trường, vật thể, chi tiết, kể cả design và xây dựng game từ những thứ nhỏ nhất.
Instancing Prefabs.
Khi bạn đã có một prefabs bạn có thể copy nó ra thành nhiều  bản một cách dễ dàng, đó gọi là Instancing prefabs. Để tạo Instancing của bất kỳ một Prefabs nào, chỉ cần drag nó từ trong Project view qua Hierarchy  hay trực tiếp trong Scene view.
Thêm Component and Scripts.
Khi bạn đã có một Prefabs hoặc game Object đang làm việt bạn có thể thêm các tính năng cho nó bằng cách sử dụng Component (Script cũng là một Component). Để thêm một Component chỉ cần chọn đối tượng rồi chọn Component tương ứng trong menu Component, bạn sẽ thấy xuất hiện các thông số trên cửa sổ Inspector. Script cũng được mặc định trong menu Component/
Trong trường hợp việc thêm Componet làm gãy liên kết giữa những GameObject với prefab của nó thì bạn có thể dùng Gameobject -> Apply Changes to Prefab từ menu để thiết lập lại liên kết đó.
Placing GameObject.
Khi đã có một GameObject trong Scene bạn có thể dùng công cụ Transform Tools để di chuyển, hoặc thay đổi giá trị Transform trong Inspector để có vị trid chnhs xác hơn.
Working Camera
Camera chính là mắt trong Game, mọi thứ người chơi có thể nhìn thấy đều thông qua Camera, nó cũng được hiển thị và thay đổi, di chuyển như bất kỳ một GameObject nào, và nó thực chất cũng là một GameObject và nó có đầy đủ thuộc tính của GameObject ngoài ra nó còn có các thuộc tính riêng cho Camera. Unity đã cung cấp một số Script sẵn kèm theo gói cài đặt mẫu Asset khi bạn khởi tạo mới một project.
Nguồn sáng
Hầu như chúng ta phải thêm nguồn sáng cho các bối cảnh của Game.
Có ba kiểu nguồng sáng cơ bản, mỗi nguồn sáng khác  nhau sẽ thay đổi sắc thái của game rất nhiều.
-         Dirictional Light:
Có thể hiểu là với nguồn sáng này ta có thể định hướng chiếu cho nó, các tia chiếu là song song.
-         Point Light:
là điểm sáng, thường dùng để tạo các điểm sáng nhỏ trên các Character, hay các cảnh trong Game theo đúng ý tưởng của chủ nhân.
-         Spotlight:
Đèn tại chỗ chỉ chiếu theo một chiều hình nón, thường dùng là hiệu ứng chiếu cho đèn các loại xe, đèn pin, ánh sáng hắt vào object trong các  cảnh…

Camera

-         Như Camera được sử dụng trong các bộ phim , Camera trong Unity cũng được dùng để hiển thị game trên thế giới cho người chơi. Nó cũng được coi là một Game Object trong Unity. Bạn có thể xoay, di chuyển…. tùy chỉnh nó theo ý tưởng của bạn.

-         Camera được sử dụng để hiển thị cảnh trong game, chúng ta có thể làm cho game của mình trở nên độc đáo hơn nhờ tùy chỉnh Camera. Tron g một cảnh, chúng ta có thể có một hoặc rất nhiều Camera.

-         Đặc điểm Camera:

o   Clear Flags: Xác định các bộ phận mà màn hình sẽ bị xóa. Thuận tiện khi sử dụng nhiều máy ảnh và để vẽ nhiều đổi tượng khác nhau. Không xóa nó sẽ hiển thị màu đen xì.

o   Background:  Màu nền cho phần màn hình còn lại.

o   Culling Mask: Chỉ định các lớp đối tượng của bạn trong Inspector. Cho phép hoặc bỏ qua các đối tượng được hiển thị trong Camera.

o   Projection:

§  Perspective: Camera hiển thị các đối tượng theo phối cảnh trọn vẹn.

§  Orthographic: Hiển thị các đối tượng như một thể thống nhất, không có theo nghĩa của phối cảnh(Perspective).

o   Size: Kích thước quan sát của Camera khi chọn phép chiếu là: Orthographic.

o   Field of view: Chiều rộng của góc nhìn Camera. Được đo bằng độ dọc theo trục Local Y.

o   Clipping plane:

§  Near: Khoảng cách gần nhất hiển thị trong Camera.

§  Far: Khoảng cách xa nhất hiển thị được trong tầm nhìn của Camera.

o   Normalized View Port Rect:

§  X: Bắt đầu từ vị trí ngang mà Camera hiển thị.

§  Y: Bắt đầu từ vị trí thẳng đứng mà Camera hiển thị.

o   Depth: Vị trí. Camera có một giá trị lớn hơn sẽ được hiển thị lên đầu. Tức là cái nào có giá trị lớn hơn thì nó sẽ được ưu tiên được hiển thị lên màn hình.

o   Rendering path: Tùy chọn cho việc xác định phương pháp vẽ những gì sẽ được hiển thị lên Camera.

§  Use Player Setting: Sử dụng cài đặt Player.

§  Vertex Lit: tất cả các đối tượng được đưa ra bởi máy ảnh sẽ được trả lại như đối tượng Vertex-Lit.

§  Forward: tất cả các đối tượng sẽ được trả về như một tài liệu. Giống như tiêu chuẩn Unity 2.x.

§  Deferred Lighting (Unity Pro only): Mất phí, không chơi. Tất cả các đối tượng sẽ được rút ra mà không có ánh sáng, sau đó tất cả ánh sáng được trả lại trong hàng đợi Render.

§  Target Texture: Phiên bản free 4.0 đã có. Tham chiếu đến một texture. Cho phép dựng hình High Dynamic Range cho máy ảnh này.


ĐỊA HÌNH
Sử dụng: Trên Menu chính, chọn Create Terrain
-         Terrain Script: Tại đây chúng ta có thể vẽ địa hình, nâng/hạ địa hình, vẽ cây, cỏ, cài đặt cho Terrain.
-         Brushes: Gồm một số dạng bút lông phục vụ việc vẽ địa hình.
MẮT LƯỚI(MESHES)
Khi một đối tượng mô hình 3D được Import. Unity sẽ gán cho nó một đại diện như một bộ lưới. Lưới phải được đính kèm với một Game Object bằng cách sử dụng một thành phần Filter Meshes.
Định dạng 3D
-         Export file định dạng 3D như: *.FBX, *.OBJ.
o   Ưu điểm:
§  Chỉ xuất ra dữ liệu bạn cần.
§  Kiểm tra lại dữ liệu.(Import lại)
§  Nhìn chung tập tin rất nhẹ.
§  Khuyến khích phương pháp Module.
§  Hỗ trợ các gói 3D.
o   Nhược điểm:
§  Có thể gây chậm trong việc tạo mẫu và sử dụng lại.
§  Khó có thể theo dõi
-         Sở hưu các file ứng dụng 3D như:  .Max,  .Blend.
o   Ưu điểm:
§  Nhanh chóng lặp đi lặp lại các quá trình.
§  Đơn giản việc sử dụng ban đầu.
o   Nhược điêm:
§  Công cụ hay bản sao của định dạng đó phải được cài đặt trên máy.
§  Tập tin có thể cồng kềnh với các file dữ liệu không cần thiết.
§  Các tập tin lớn có thể làm chậm cập nhật của Unity.
§  Chưa xác nhận khó khăn để khắc phục sự cố các vấn đề. 

Animation View Guide (Legacy)

-         Ctrl + 6(Windows): mở  Animation View.

-         Để sử dụng Animation cơ bản, trước tiên chọn Create new clip. Animation sẽ hiển thị các tùy chọn trên Animation View hoặc trên Inspector. Để áp dụng animation cho một đối tượng nào đó bạn phải chọn vào đối tượng đó à thuộc tính animation tương ứng sẽ hiển thị trên Animation View tương ứng.

-         Sử dụng Cuves:

è Right – click à add Curves.
Trên  Animation view có thể chọn một thuộc tính hoặc một vào thuộc tính để tùy biến hoạt hình theo các thuộc tính của đối tượng. Chính sửa Curves bằng cách tại các frame đã được tạo, kéo đường kẻ theo ý bạn muốn. Nó sẽ hiển thị ngay trên Scene View hoặc trên Inspector.
          Tại các điểm Frame, có thể xóa frame, chỉnh/chọn tiếp tuyến, ….
Có thể sử dụng button nhỏ (+) để thêm Frame hoặc Event cho Animation hoặc click-right lên thanh frame.
Animation Scripting (Legacy): hệ thống Animation của Unity cho phép bạn tạo đẹp nhân vật của mình bằng các pha trộn các vật liệu, chất phụ gia, đồng bộ hóa thời gian, chu kì, các lớp ảnh động, kiểm soát tất cả các  các khía cạnh phát lại của hình ảnh động(thời gian, tốc độ, sự pha trộn – trọng lượng)
          Một nhân vật hoạt hình luôn có hai vấn đề chính đó là sự di chuyển của nó trong thế giới và tạo hiệu ứng cho phù hợp.

-         Animation Blending:

Trong     các trò chơi ngày nay, hình ảnh động hòa trộn làm cho nhân vật trở nên trơn chu hơn. Tại bất cứ thời điểm nào trong game, bạn đều có thể chuyển đổi qua lại giữa hình ảnh động và hình ảnh tĩnh(hình ảnh nhàn rỗi).
Đây là nơi các hình ảnh động được Blending. Tất cả các hình ảnh động được thêm, pha trộn vào nhau để được hình ảnh động cuối cùng.
Ví dụ: Tạo một chuyển động đơn giản để xem nhân vật chuyển động nhanh thế nào, và rồi chuyển đổi giữa hoạt hình động và hoạt hình tĩnh.

function Update () {
   if (Input.GetAxis("Vertical") > 0.2)
       animation.CrossFade ("walk");
   else
      animation.CrossFade ("idle");
}
C#:
void Update () {
   if (Input.GetAxis("Vertical") > 0.2)
       animation.CrossFade ("Đi mau");
   else
      animation.CrossFade ("Không làm gì");
}
Tạo file Java Script hoặc C# Script. Copy đoạn mã trên vào và kéo file Script vào nhân vật.

-         Animation Layers: là một khái niệm hữu ích giúp bạn nhóm các hình ảnh động và ưu tiên cho chúng.

Hệ thống hoạt hình của Unity có thể pha trộn giữa nhiều Clip hoạt hình theo ý bạn muốn. Có thể gán lượng pha trộn bằng tay hay sử dụng animation.CrossFade()(Cái này sẽ sinh liều lượng pha trộn tự động).
     Lượng Blen luôn được bình thường hóa trước khi được áp dụng. Tưởng tượng như bạn có một chu kỳ Walk và một chu kỳ chạy, cả hai đều có lượng là 1(100%). Khi bình thường hóa thì mỗi chu kỳ chiếm 50% lượng. Tuy nhiên nếu bạn muốn cho bên nào đó có lượng lớn hơn thì bạn có thể Blen bằng tay.
Ví dụ Layering
     Ví dụ: Bạn phải có một hoạt hình bắn, một object tĩnh và một Object Walk chu kỳ. Đối tượng Walk và đối tượng tĩnh sẽ được Blen dựa vào tốc độ của người chơi. Nhưng khi người chơi bắn, chúng ta chỉ cần hiển thị đối tượng hoạt hình bắn. Vì vậy các hoạt hình động cơ bản có mức ưu tiên cao hơn. Cách đơn giản nhất để làm điều này đó là tiếp tục chạy đối tượng Walk và các đối tượng tĩnh(Nhàn rỗi hay đối tượng đứng im) trong khi bắn. Để làm điều này, chúng ta cần chắc chắn là các đối tượng hoạt hình bắn ở cao hơn so với đối tượng hoạt hình Walk và đối tượng tĩnh. Điều đó có nghĩa là hoạt hình bắn sẽ được Blend đầu tiên. Đối tượng Walk và đối tượng tĩnh chỉ nhận được lượng(Blend) khi đối tượng hoạt hình bắn không sử dụng hết 100% lượng Blend. Vì khi CrossFade đối tượng hoạt hình bắn trong một lượng sẽ bắt đầu từ 0 và trong một thời gian ngắn sẽ trở thành 100%. Trong khi mới bắt đầu,  The Walk và the IDLE layer cũng vẫn nhận được lượng hòa trộn(Blend). Nhưng khi đối tượng hoạt hình bắn(Shoot) được hoàn thành và hoàn toàn bị phai nhạt, chúng sẽ không nhận được lượng Blend nào.

-         Animation Mixing:  Animation Mixing cho phép cắt giảm số Animation mà bạn cần trong game bởi chỉ cần một số Animation được áp dụng trên thân đối tượng. Điều đó có nghĩa là đối tượng hoạt hình có thể được sử dụng chung với các đối tượng hoạt hình khác.

     Bạn thêm một Animation Mixing biển đổi tới một Animation bởi lời gọi AddMixingTranform().

Ví dụ Mixing:  Trong hoạt hình, giông như khi bạn nghe thấy những làn sóng vỗ tay. Bạn có thể tạo ra những làn sóng vỗ tay hoặc khi nhàn rỗi tùy từng trường hợp đối tượng ở trạng thái nào.
Ví dụ thêm một chuyển đổi Mixing từ một biến Transform.

-         Animating Characters Procedurally: Nhiều khi chúng ta sẽ cần hoạt hình hóa xương của nhân vật.

-         Animation Playback and Sampling: Làm thế nào để lấy lại được mẫu hoạt hình trong Unity khi người chơi sử dụng lại máy đó.


Sound
-         Audio Listener: Giống như một thiết bị Microphone. Nó nhận đầu vào từ bất cứ một nguồn âm thanh nào trong Scenes và các âm thanh thông qua máy tính. Đối với hầu hết các ứng dụng, nó là ý nghĩa nhất để gắn tai nghe lên Main Camera.
Ranh giới/độ ảnh hưởng âm thanh nghe của Reverb Zone được áp dụng cho toàn Scene thì có thể nghe thấy âm thanh trên bất cứ địa điểm nào của Scene.
-         Properties: Phải thêm âm thanh vào Scene và chỉnh sửa thuộc tính của âm thanh bên Inspector View.
o   Audio Clip: Chọn file âm thanh cho Scene.
o   Mute: bật/tắt âm thanh.
o   Bypass Effects: Lọc nhanh hiệu ứng “by-pass” to audio source. Một cách dễ dàng nhất để bật/tắt hiệu ứng(effect).
o   Play on Wake: Nếu enable, âm thanh sẽ được chạy ngay khi ra mắt Scene. Nếu để Disable, khi cần chạy âm thanh chúng ta phải gọi phương thức/chức năng Play() từ Script.
o   Priority: Xác định độ ưu tiên của Audio Source trong số tất cả các Audio Source có trong Scene.
§  Priority = 0: Rất quan trọng. Sử dụng ở mức 0 cho bài nhạc để tránh bị thường xuyên trao đổi.
§  Priority =256: Độ quan trọng thấp nhất(Độ ưu tiên ở mức thấp nhất).
§  Mặc định(default) = 128.
o   Volumn: Làm thế nào để âm thanh lớn trên một bộ phận của thế giới Scene từ Audio Source.
o   Pitch: Số dùng thay đổi tốc độ của âm thanh. Tốc độ bằng 1 là ở mức chạy bình thường.
o   3D Source Setting: Cài đặt, cái mà được áp dụng cho Audio source nếu Audio Clip là một file âm thanh 3D.
o   Pan Lever: Cài đặt, làm thế nào để máy 3D có được hiệu ứng từ Audio source.
o   Spread: Cài đặt góc ảnh hưởng tới âm thanh 3D Stereo nếu Audio Clip là một âm thanh 3D.
o   Doppler  Lever: Xác định bao nhiêu hiệu ứng âm thanh Dopper sẽ được áp dụng cho Audio Source(Nếu cài đặt là 0 thì sẽ không có hiệu ứng nào được áp dụng).
o   Min Distance: Với Min Distance, âm thanh sẽ đạt mức to nhất có thể. Ngoài Min Distance, nó sẽ bắt đầu suy yếu đi. Tăng MinDistance của âm thanh để được âm thanh lớn hơn trong thế giới 3D và giảm MinDistance để cho âm thanh nhỏ hơn.
o   Max Distance: Khoảng cách mà âm thanh dừng suy giảm. Sau khoảng cách này nó sẽ tạm ngừng không cho MinDistance tăng nữa. Tức là đây là giá trị Max mà MinDistance sẽ đạt tới.
o   Rolloff Mode: Làm thế nào nhanh chóng mất dần âm thanh. Giá trị cao hơn, gần gũi hơn Listener có được trước khi nghe âm thanh.(Điều này được xác định bởi một Graph).
§  Logarithmic Rolloff: Âm thanh là lớn khi bạn ở gần nguồn âm thanh. Nhưng khi chúng ta nhận được từ các đối tượng nó sẽ giảm đi nhanh chóng một cách đáng kể.
§  Linear Rolloff: Càng xa nguồn âm thanh, bạn nghe thấy càng ít.
§  Custom Rolloff:
o   2D Sound Setting: Cài đặt áp dụng cho nguồn âm thanh, nếu Audio Clip là âm thanh 2D.
o   Pan 2D:  Cài đặt hiệu ứng trên nguồn âm thanh.
o   Type Rolloff:
o   Distance Function:
Volume: Amplitude(0.0 - 1.0) over distance.
Pan: Left(-1.0) to Right(1.0) over distance.
Spread: Angle (degrees 0.0 - 360.0) over distance.
Low-Pass (only if LowPassFilter is attached to the AudioSource): Cutoff Frequency (22000.0-10.0) over distance.
o   Tạo một nguồn âm thanh:
§  Import file âm thanh của bạn vào project. Nó là những Audio Clip.
§  Tới Game Object -> Create Empty từ menubar.
§  Trên file âm thanh đang chọn trên Game Object View, chọn Component à Audio à Audio Source.
§  Thuộc tính của nguồn âm thanh sẽ được hiển thị trên Inspector View.


Các phần tử giao diện trong Game
(Game Interface Elaments)
Unity đã cho chúng ta một số cài đặt để có thể tạo giao diện người dùng đồ họa của game(Graphic User Interface). Bạn có thể sử dụng đối tượng GUI Text và GUI Texture trong Scene hoặc tùy chính giao diện từ Script.
-         GUI Script:
Điều khiển Unity cung cấp một chức năng đặc biệt gọi là OnGUI(). Chức năng OnGUI() được gọi từ tất cả các frame, nó giống như chức năng Update().
Rect(float left, float top, float width, float height);
Ví dụ: Tạo một giao diện đơn giản:
JavaScript:
// JavaScript
function OnGUI () {
               if (GUI.Button (Rect (10,10,150,100), "I am a button")) {
                               print ("You clicked the button!");
               }
}

using UnityEngine;
using System.Collections;

public class GUI_Learn : MonoBehaviour {

          // Use this for initialization
          void Start () {      
          }
         
          // Update is called once per frame
          void Update () {  
          }
          void OnGUI()
                   {
                   GUI.Box(new Rect(0,0,600,300),"GUI_Box");
                  
                   }
}

Hien thi mot hinh anh, mot bien Texture 2D
Hiển thị một hình ảnh, cần khai báo một biến Texture 2D, đường dẫn ảnh lấy như trong hình dưới:
Source đã demo trực tiếp
using UnityEngine;
using System.Collections;

public class GUI_Learn : MonoBehaviour {
                                                                                                           
public Texture2D controlTexture2D;
// Use this for initialization
void Start () {
}

// Update is called once per frame
void Update () {

}
private bool flag=false;
string text = "Ví dụ tạo textFild và textArea";
private bool toggle;
void OnGUI()
{
// Create a Box
GUI.Box(new Rect(0,0,600,300),"GUI_Box");
// Nghich voi Button
if(!flag)
{
            //          print(flag);
            if( GUI.Button(new Rect(260, 20, 80, 20)," GUI_Button 1"))
                        {
            flag = true;                             
                        }
            }else {
            }
            if(flag == true)
            {
                        if( GUI.Button(new Rect(260, 60, 80, 20)," GUI_Button 2"))
                        {                                              
            flag = false;                            
                        }
            }
            // voi Loader Menu --- Thang nay chua hieu lam
            if( GUI.Button(new Rect(260, 80 , 80, 20), "Lever 1"))
            {
                        Application.LoadLevel(2);                 
            }
            if( GUI.Button(new Rect(260, 100 , 80, 20), "Lever 1"))
            {
                        Application.LoadLevel(1);                 
            }
            // Có thể vẽ vào vào bất cứ thời gian được xác định nào.
            // vi du Neu time chan-> khong ve, neu time le? thi ve
            if(Time.time % 2 < 1)
            {
                        GUI.TextField(new Rect(260, 120, 80, 20), "text");
            }
            // vi tri Top-left, Top-right, Top-Bottom, Bottom_right
            GUI.Button(new Rect(0,0, 80, 40), "Top-Left") ;
            GUI.Button(new Rect(0,Screen.height - 40, 80, 40), "Bottom-left");
            GUI.Button(new Rect(Screen.width - 80,0, 80, 40), "Top-Right");
            GUI.Button(new Rect(Screen.width - 80, Screen.height - 40, 80, 40),"Bottom-Right");
            // Hien thi mot hinh anh, mot bien Texture 2D
            GUI.Label(new Rect(90,0, 80,80), controlTexture2D);         
            GUI.Button(new Rect(170, 0, 80,80), controlTexture2D);
            // hiển thị Icon với GUIContent trên một BOX
            GUI.Box(new Rect(0,100,100,100), new GUIContent("GUI_Content", controlTexture2D));
            // Hiển thị ToolTip khi Hover chuột
                        // Button này sẽ hiển thị Tooltip lên một Label khi người dùng Hover vào Button         
            //GUI.Button(new Rect(0,230,60,60), new GUIContent("Click here"," I'm ToolTip 1"));
// Nội dung Tooltip sẽ được hiển thị lên Label này
            //GUI.Label(new Rect(60, 210, 100,30), GUI.tooltip);
            // Vẽ Icon lên ToolTip chưa được
            GUI.Button(new Rect(10,320,60,60), new GUIContent("Click here",controlTexture2D,"I'm ToolTip 2"));                          
            GUI.Label(new Rect(100, 390, 200,60), GUI.tooltip);
            // RepeatButton Là một biến thể của Button, nhưng sự khác biệt là: RepeatButton sẽ trả lời từng khung hình mà nút chuột vẫn còn chán nản(thấp...)
            // Ví dụ: Cách sử dụng cơ bản
            if(GUI.RepeatButton(new Rect(200,300, 100,100),"RepeatButton"))
                        {
                        // Code ở trong này sẽ được thực thi trên tất cả các frame cái mà RepeatButton vẫn đã Click
                        print("RepeatButton");
                        }
            text = GUI.TextField(new Rect(200,150, 50,40),text); // Phải có thằng biến text kia mới nhập được xâu kí tự vào TextField thì phải
            //GUI.TextField(new Rect(400,150, 50,40),text);        // Đúng rồi, test thử cái tghằng này, nếu không có cái biến text kia thì sẽ khong nhập được String
                                                                                                           
            /* ----------------------- */
            // Toggle sử dụng để tạo CheckBox. Người sử dụng có thể thay đôi trạng thái nhờ Click
            toggle = GUI.Toggle(new Rect(200, 400, 90,20),toggle,"Check Box");
            // Sử dụng ToolBar/ thanh công cụ dùng để kiểm soát một loạt các nút. Các nút hoạt động trong nó được theo dõi thông qua số
            // nguyên, chúng ta phải cung cấp các số nguyên như là một đối số trong hàm. Để làm cho thanh công cụ tương tác
            // chúng ta phải gán số nguyên với các giá trị trả về của hàm. Số phần tử trong mảng sẽ quy định số nút hoạt động trên ToolBar

toolBarInt = GUI.Toolbar(new Rect(400,0, 300, 40),toolBarInt, toolBarString);
            /* -------------------------- */
            /* ----------SelectionGrid---------- */
            /* -------------------------- */
            /* Tương tự như Toolbar, ta kiểm soat thông qua 1 biến số nguyên */
            selectionGridInt = GUI.SelectionGrid(new Rect(400, 80, 200,200), selectionGridInt, selectionGridString, 2 /* số cột */);
            /* -------------------------- */
            /* ----------HorizontalSlider---------- */
            /* -------------Điều khiển thanh trượt ngang từ giá trị nhỏ nhất tới giá trị lớn nhất------------- */
            slider_value = GUI.HorizontalSlider(new Rect(400, 300, 100, 20), slider_value, 0.0f, 100.0f);           
                        /* -------------------------- */
            /* ----------VerticalSlider---------- */
            slider_value = GUI.VerticalSlider(new Rect(400, 330, 100, 20), slider_value, 0.0f, 100.0f);           
                        /* -------------------------- */
            /* ----------HorizontalScrollbar---------- */
            HorizontalScrollbar = GUI.HorizontalScrollbar(new Rect(400, 360, 100, 20), HorizontalScrollbar, 1.0f, 0.0f, 10.0f);
           
            /* -------------------------- */
            /* ----------ScrollView---------- */
            // Begin the ScrollView
            scrollViewVector = GUI.BeginScrollView (new Rect (25, 25, 100, 100), scrollViewVector, new Rect (0, 0, 400, 400));

            // Put something inside the ScrollView
            innerText = GUI.TextArea (new Rect (0, 0, 400, 400), innerText);

            // End the ScrollView
            GUI.EndScrollView();
            /* -------------------------- */
            /* ----------GUI.changed---------- */                
            /* ---- Dùng để phát hiện người sử dụng đã làm điều gì đó: Click, kéo thả, kéo thanh cuộn, ....
             */
                        // Xác định Button đang được bật cho dù nó đã được click frame này hay không
            GUIChanged = GUI.Toolbar(new Rect(100,300,100,100),GUIChanged, ToolbarStringChanged);
            // Nếu người dùng đã click một nút Toolbar mới frame này, chúng ta sẽ xử lý đầu vào
            if(GUI.changed)
                        {
                        Debug.Log("Toolbar da duoc click");
                        if(0 == GUIChanged)
                                    {
                                    Debug.Log("Nut thu nhat da duoc click");
                                    }
                        else{
                                    Debug.Log("Nut thu hai da duoc click");
                        }
                       
                        }          
           
            /* -------------------------- */
            /* ----------Window---------- */
            windowRect = GUI.Window (0, windowRect, WindowFunction, "My Window");
  }
void WindowFunction (int windowID) {
            // Draw any Controls inside the window here
            //GUI.Button(new Rect(300,500, 100,100), "hello");
  }
}

Customization
Có hai cách tùy chỉnh đó là sử dụng: GUI Skin và GUI Style. Thực chất GUI Skin là một tập hợp các GUI Style.


                                     


Layout Modes
-         Điều chỉnh Layout và Layout tự động:
// Layout
                        // Fix Layout
            GUI.Button(new Rect(260, 100 , 80, 20), "In Layout");
                        // Layout Automatic
                        GUILayout.Button(" Layout Automatic");

About Học viện đào tạo trực tuyến

Xinh chào bạn. Tôi là Đinh Anh Tuấn - Thạc sĩ CNTT. Email: dinhanhtuan68@gmail.com .
- Nhận đào tạo trực tuyến lập trình dành cho nhà quản lý, kế toán bằng Foxpro, Access 2010, Excel, Macro Excel, Macro Word, chứng chỉ MOS cao cấp, IC3, tiếng anh, phần mềm, phần cứng .
- Nhận thiết kế phần mềm quản lý, Web, Web ứng dụng, quản lý, bán hàng,... Nhận Thiết kế bài giảng điện tử, số hóa tài liệu...
HỌC VIỆN ĐÀO TẠO TRỰC TUYẾN:TẬN TÂM-CHẤT LƯỢNG.
«
Next
Bài đăng Mới hơn
»
Previous
Bài đăng Cũ hơn