Ở phần trước chúng ta biết thế nào là Unity Project, Assest, and Scene. Ở phần này tôi sẽ tiếp tục trình bày về GameObjects, Transforms, và Components, Cameras,Meshes and Geometry.

GameObjects, Transforms, và Components

Tất cả mọi thứ trong Scene là một GameObject. Characters, cameras, lights, ammo, weapons, particle systems, power-ups, sounds, music, spaceships, enemies; Tất cả đều là những ví dụ về GameObjects-mỗi đối tượng trên đều là một GameObject. Nếu bạn đã import một mesh assets vào Unity, bạn có thể kéo và thả nó từ tag Project vào Scene Viewport, bạn sẽ thấy một thể hiện của nó trong scene đó. Nó là một GameObject. Bạn có thể kéo và thả các Object nhiều lần để tạo ra nhiều trường hợp trong scene, và do đó sẽ có nhiều GameObject. Trong tag Hierarchy đã hiển thị một list các GameObject trong Scene, và để tạo ra một game bạn cần làm việc với rất nhiều GameObjects.

chú ý: Unity cho phép bạn tạo ra các Object nguyên thủy đơn giản trong một scene, ví dụ: Cubes, Spheres. Để tạo một GameObject chọn GameObject ➤ Create Other ➤ Cube, or GameObject ➤ Create Other ➤ Sphere, or GameObject ➤ Create Other ➤ Cylinder. Các Plane Object có thể có hữu ích trong Game 2D bởi vì nó có thể dễ dàng hiển thị một hình ảnh phẳng trước camera. bạn sẽ thấy điều này sau.

Các GameObject không phải là một vật nhỏ trong scene. Mỗi GameObject bao gồm các phần nhỏ hoặc một khối, chúng được gọi là các Components. trong thực tế, một GameObject là tổng hợp của các components trong nó. Các Component có thể nhình thấy trong tag Inspector khi bạn chọn nó trong Scene. Cube (ảnh bên dưới)đươch xây dựng từ một số các Components, một Transform Component, một Mesh Filter Component, một Box Collider Component, một Mesh Renderer Component. Mỗi thành phần này có thể co giãn và đổ sập trong Object Inspector để dễ dàng hơn hãy xem giao diện bên dưới, chỉ bằng cách click vào biểu tượng mũi tên xoay.

Học lập trình game trực tuyến cơ bản đến nâng cao

Bây giờ, bạn có thể tạo nhiều khối lập phương đó (trong hình dưới) có ít nhất hai Object. Bạn có thể chọn khối lập phương và nhấn Ctrl + D trên bàn phím. Hoặc, bạn có thể tạo ra một Game hoàn toàn mới và empty gameObject ngay từ đầu và sau đó tái thiết lập Components của nó để tạo một Cube. Các phương pháp cũ có thể là dễ dàng hơn, nhưng sau này nó sẽ giúp chúng ta thấy được tầm quan trọng của các thành phần. Nếu bạn muốn thử điều này bằng tay "manual method” sáng tạo một GameObject, bạn có thể làm như sau: Chọn GameObject ➤ Create Empty (Hoặc nhấn Ctrl + Shift + N) từ trình đơn ứng dụng để tạo ra một empty GameObject. Sau khi tạo ra, đảm bảo đối tượng này được chọn trong tag Hierarchy Panel. Sau đó, thêm các thành phần đó bằng cách chọn Component từ menu ứng dụng và chọn các components thích hợp để thêm. Ví dụ, để thêm các thành phần Mesh Filter, chọn Component ➤ Mesh ➤ Mesh Filter từ menu. Hãy xem một Hình dưới cho thấy làm thế nào tôi tạo ra một đối tượng được sao lưới với Mesh Filter, Box Collider, và Mesh Renderer Components.

Học lập trình game trực tuyến cơ bản đến nâng cao

Trong thuật ngữ lập trình, mỗi component là một class duy nhất. Một GameObject được làm từ nhiều components và do đó có nhiều class, tất cả đều tương tác và xác định hành vi của Object đó. Bởi vì Objectc trong Scenetự nhiên sẽ khác nhau (Player không hành động như kẻ thù, và súng không hành động như núi lửa, vv) do đó mỗi GameObject sẽ được sáng tạo khác nhau thành phần với các thiết lập khác nhau. Mặc dù có sự khác biệt giữa các Object, mỗi GameObject trong một Scene có một component chung. Đó là Transform Component (xem hình dưới).

Học lập trình game online cơ bản đến nâng cao

Mỗi GameObject đều có một transform Component, và bạn có thể thay đổi position(vị trí), rotation(góc quay) và Scale (co dãn) của đối tượng đó. đẻ làm được điều này có rất nhiều cách, bạn có thể thiết lập các giá trị trong tag Inspector hoặc có thể sủ dụng các file Script(code) để điều chỉnh các thuộc tính của Transform Component như một class. Đơn giản hơn nũa bạn sử dụng Transform tools trên Editor toolbar đồng thời bạn cũng có thể sủ dụng bàn phím với các phím sau: W(Transform hoặc move), E(Rotate), R(scale hoặc Resize) hãy nhình hình dưới:

Học lập trình game trực tuyến cơ bản đến nâng cao

Translation là sự di chuyển object trong trục tọa độ X,Y hoặc Z. Thông thường trong các Game 2D, tất cả các object đều tồn tại trên một mặt phẳng có nghĩa là tất cả các object có giá trị như nhau trên cùng trục (thường là trục Z). Nhưng tất cả chúng ta càn phải biết translation(dịch chuyển) trong không gian 3D. Để dịch chuyển một đối tượng, nhấn phím W trên bàn phím máy tính của bạn, chọn object để dịch chuyển, trong tag Scene Viewport hãy dùng chuột kéo các mũi tên được găn liền với đối tượng mà bạn chọn di chuyển theo vị trí mà bạn muốn (note: có một hệ trục tọa độ góc bên phải của scene hãy để ý mầu sắc của các hướng tương ứng với màu sắc của mũi tên). Taih một thời điểm chỉ di chuyển được một hướng.

Học lập trình game trực tuyến chất lượng

Tương tự như tranlate, bạn cũng có thể rotate, scale hoặc resize.

Cameras

Mặc định tất cả các Scene trong Unity được tạo rỗng ngoại trừ một GameObject là camera. Object này được dặt tên là Main Camera. Nó là một đối tượng quan trọng trong games, và dặc biệt đối với các game 2D, như chúng ta đã thấy. Nó như là một con mắt quan sát Scene từ đó sẽ xuất hiện tất cả các sự kiện trong Game lên màn hình. Một Scene trong Unity có thể có nhiều hơn một camera, nếu nó cần thiết. Nó là rất tôt, bạn có thể dịch chuyển các camẻa trong quá trình chơi, và thậm chí có thể hiển thị nhiều camera cùng một lúc trong chế độ chia màn hình.

Camera cũng giống như các Game Object khác, nó cũng có một Transform Component. Diều này là có thể tranlate, rotate nó trong không gian 3D. Đối với game 2d không sử dụng rotate thường xuyên trong khi chơi, và position thường chỉ thay đổi tromg một mắt phẳng (trên 2 trục thay vi 3).

Để thêm một Camera vào Scene, chọn GameObject ➤ Create Other ➤ Camera từ menu ứng dụng, một preview của camera mới trong Scene sẽ hiển thị lên Viewpotr.

Học lập trình game trực tuyến cơ bản đến nâng cao

Mỗi Camera đều có một thuộc tính hình chiếu. bạ có thể truy cập vào Camera Component trong Inspector. Đông thời nó ũng có thể truy cập trong Script thông qua các thuộc tính hình chiếu của Camera class. Thuộc tính này có thể chọn một trong hai giá trị sau:

  • Perspective (Mặc định).
  • Orthographic (hình bên dưới).

Học lập trình game trực tuyến cơ bản đến nâng cao

Orthographic: giá trị này điều khiển Camera chuyển đổi một cảnh 3D thành một màn hình phẳng hoặc màn hình hiển thị. Điển hình là Game 3D sẽ thiếu thuộc tính chiếu để thiết lập phối cảnh. bởi vì ở chế độ này các cảnh được xuất ra theo quy luật. không có đường góc và sự hội tụ, xa gần của Object. Nhưng với Game 2D có vẻ tôt và thường được dùng thay vì phải tạo một View khác(vấn đề này sẽ được thảo luận bài: Quick 2D Workflow, Cameras and Pixel Perfection, Getting Started with a 2D Game).

Một điều quan trọng khác, Mỗi Camra mới được tạo ra có kích hoạt Listener Component. Nó có tác dụng như một tai ảo. Tong một Scene mà không có một Listener Component thì bạn sẽ không thể nghe thấy bất cứ điều gì, không có âm thanh hay âm nhạc cho ra loa. Khi một AudioListener được gắn vào một Object bạn sẽ nghe thấy rõ hơn so vứi những đối tượng ở xa bạn. Thông thường một game sẽ chỉ có một AudioListener hoạt động tại một thời gian trong quá trinh chơi. Điều này đảm bảo các game thủ nghe một phạm vi hợp lý của âm thanh. bạn không nên thêm một tiếng chói tai hoắc âm thanh hôn độn từ các bộ phận khác nhau trong Scene. Nếu bạn thêm nhiều hơn một Camera, có khả năng là cả hai sẽ đi kèm với một AudioListener Component, và điều này sẽ Crash khi bạn cố gắng để chạy các Game vì Unity sẽ không biết được Listener nào để lựa chọn. Hãy chắc chắn để cấu hình các thành phần AudioListener, nếu bạn có nhiều, vì vậy chỉ có một cách kích hoạt một trong một thời gian.

Meshes and Geometry

Trong Unity, một mesh là một asset. Nó có lẽ là một trong những asset phổ biến nhất trong một video Game. Mỗi mô hình hoặc object hoặc "vật nào đó" trong Scene của bạn sẽ là một mesh. Kẻ thù, người chơi, các bức tường và sàn nhà, địa hình và bầu trời, và nhiều hơn nữa, đây là những ví dụ về các Meshes. Mesh được làm từ ba thành phần chính: geometry, mapping, and animation. Các tính năng geometry như đỉnh, cạnh, và khuôn mặt. Cùng ba cấu hình thành một mô hình hoàn chỉnh và dữ liệu bề mặt của nó. Mesh đặc biệt nổi bật trong các trò chơi 3D, nhưng chúng cũng có một chỗ trong các trò chơi 2D. Trò chơi 2D dựa trên một loại đặc biệt của Mesh được biết đến như là một quad hoặc billboard hoặc plane. Đây là một bề mặt hình chữ nhật được hình thành từ bốn điểm góc. Trong thực tế, bề mặt này được làm từ hai tam giác vuông góc liên kết với nhau ở mặt cạnh huyền. Bề mặt này rất hữu ích bởi vì, khi liên kết với Camera, nó hoạt động như một tờ giấy mà có thể hiển thị hình ảnh và kết cấu. Thông thường, các trò chơi 2D nhiều tính năng quads camera liên kết: một cho từng Object trong Scene. Unity đi kèm với một đối tượng Plane rằng có thể hành xử như thế này. Nó có thể được thêm vào các cảnh bằng cách chọn GameObject ➤ Create Other ➤ Plane (xem hình dưới). Tuy nhiên, các Unity Plane được lót đá cao với đỉnh và các cạnh chạy theo hàng và cột trên các bề mặt phẳng. Điều này làm cho nó một sự lựa chọn phù hợp cho các game cần rất nhiều quads và các đối tượng đồ họa, bởi vì ngày càng cạnh và nhiều điểm dẫn đến phức tạp hơn và hiệu suất intensiveness, đặc biệt là trên các thiết bị di động.

Học lập trình game trực tuyến cơ bản đến nâng cao

Chú ý Nhiều trò chơi 2D cũng sử dụng hình ảnh động bộ xương, gian lận, và xương thẳng từ các ứng dụng 3D, xử lý rất nhiều nhu cầu hoạt hình của họ. Điều này đặc biệt đúng đối với các hình ảnh động liên quan đến translation, rotation, and scaling.

Một thay thế hiệu quả hơn để sử dụng Unity Plane là để tạo ra quad của riêng bạn Mesh từ Script, sử dụng các thuộc tính và phương thức của lớp Mesh. ()Trong bài: Procedural Geometry and Textured Quads) sẽ cho thấy bạn làm thế nào để làm điều này. Với phương pháp này, bạn có thể xây dựng một quad tailor-made với số lượng tối thiểu của các đỉnh cần thiết, và cũng có kiểm soát tốt hơn các mapping để kiểm soát cách thức texture(kết cấu) được sơn trên bề mặt của nó.

Hầu hết các tính năng Game rất nhiều cái gọi là "static geometry (hình học tĩnh)"như các bức tường, sàn nhà, trần nhà, đồ nội thất nhất (chẳng hạn như bàn ghế, tủ sách và tượng), và hầu hết các yếu tố địa hình (như đồi núi) . Nếu object là một phần của Scene và không di chuyển hoặc thay đổi hoặc biến dạng trong khi chơi, sau đó nó đủ điều kiện như là một yếu tố tĩnh của Scene. Điều này áp dụng cho cả 3D và 2D. Yếu tố tĩnh như những cung cấp cho chúng ta một cơ hội để tối ưu hóa Game của bạn và cải thiện hiệu suất thời gian chạy của nó. Trong ngắn hạn, nếu Scene của bạn có các Object tĩnh, sau đó hãy chắc chắn để chọn các object và enable Static check box từ Inspector, như thể hiện trong hình dưới. Việc làm này cho phép Unity để hàng loạt các object với nhau và làm cho chúng như một thể duy nhất với mức tối thiểu trên không tính toán. Mặc dù đánh dấu check box trong editor là một việc rất đơn giản để làm, đừng đánh giá thấp những lợi ích đáng kể hiệu suất này có thể có về Game của bạn. Tôi khuyên bạn nên đầu tư thêm thời gian và công sức, kiểm tra qua Scene và object của bạn, đảm bảo rằng không có yếu tố tĩnh còn lại hoàn toàn thoải mái.

Học lập trình game trực tuyến cơ bản đến nâng cao