Trong hướng dẫn lập trình Game bằng Unity này, chúng ta sẽ xây dựng một bản demo đơn giản để tìm hiểu cách sử dụng các tính năng nhiều người chơi của Unity.
Để làm được theo hướng dẫn này, bạn phải làm quen với các khái niệm sau:
-
C# programming.
-
Sử dụng Unity Editor, chẳng hạn như nhập nội dung, tạo prefabs và thêm các thành phần.
Trước khi bắt đầu
Nếu đây là lần đầu tiên bạn bước vào thế giới Unity, NIIT-ICT Hà Nội khuyên bạn nên tìm hiểu qua một số hướng dẫn về Unity miễn phí qua một số khóa học trực tuyến, hoặc đọc tài liệu cho những người bắt đầu về game Unity trên Website của ICT Hà Nội.
Tạo dự án và nhập nội dung
Trước khi bắt đầu đọc hướng dẫn, bạn cần tạo một dự án Unity mới và nhập tất cả các họa tiết có sẵn thông qua mã nguồn. Để làm điều đó, hãy tạo một thư mục có tên Sprites và sao chép tất cả các sprite vào thư mục này. Unity Inspector sẽ tự động nhập chúng vào dự án của bạn.
Trong Sprite Editor (hiển thị bên dưới), bạn cần mở menu lát cắt và nhấp vào nút Slice với loại lát cắt là tự động. Cuối cùng, nhấn áp dụng trước khi đóng.
Chúng tôi cũng cần nhập nội dung Mirror. Truy cập Cửa hàng nội dung (Cửa sổ > Cửa hàng nội dung) và tải xuống “Mirror”.
Phông nền
Chúng ta có thể làm điều đó bằng cách tạo một Hình ảnh mới trong Hệ thống phân cấp và nó sẽ tự động tạo một Canvas mới (đổi tên nó thành BackgroundCanvas).
Trong BackgroundCanvas, chúng ta cần đặt Chế độ kết xuất của nó là Không gian màn hình. Sau đó, chúng ta sẽ đặt Chế độ tỷ lệ giao diện người dùng của nó thành Tỷ lệ theo kích thước màn hình. Bằng cách này, Canvas sẽ xuất hiện ở chế độ nền chứ không phải ở phía trước các đối tượng khác.
Trong Hình nền, chúng ta chỉ cần đặt Hình ảnh nguồn, đây sẽ là hình ảnh không gian.
Hãy thử chạy trò chơi ngay bây giờ và bạn sẽ thấy nền không gian trong trò chơi.
Quản lý mạng
Để có một trò chơi nhiều người chơi, chúng ta cần một GameObject với các thành phần NetworkManager và NetworkManagerHUD, vì vậy hãy tạo một cái.
Đối tượng này sẽ chịu trách nhiệm quản lý việc kết nối các client khác nhau trong một trò chơi và đồng bộ hóa các đối tượng trò chơi giữa tất cả các client. HUD của Trình quản lý mạng hiển thị một HUD đơn giản để người chơi kết nối với trò chơi.
Ví dụ: nếu bạn chơi trò chơi bây giờ, bạn sẽ thấy màn hình sau:
Trong hướng dẫn này, chúng ta sẽ sử dụng các tùy chọn LAN Host và LAN Client. Trò chơi nhiều người chơi Unity hoạt động theo cách sau: đầu tiên, người chơi bắt đầu trò chơi với tư cách là máy chủ (bằng cách chọn Máy chủ LAN). Máy chủ hoạt động như một máy khách và máy chủ cùng một lúc. Sau đó, những người chơi khác có thể kết nối với máy chủ này bằng cách làm khách hàng (bằng cách chọn LAN Client). Máy khách giao tiếp với máy chủ, nhưng không thực thi bất kỳ mã nào chỉ dành cho máy chủ.
Sự chuyển động của tàu
Bây giờ chúng ta đã có Trình quản lý mạng, chúng ta có thể bắt đầu tạo các đối tượng trò chơi sẽ được quản lý bởi nó. Cái đầu tiên chúng ta sẽ tạo là con tàu của người chơi.
Hiện tại, con tàu sẽ chỉ di chuyển theo chiều ngang trên màn hình, với vị trí của nó được cập nhật bởi Trình quản lý mạng.Vì vậy, trước hết, hãy tạo một GameObject mới có tên là Ship và biến nó thành một nhà lắp ghép. Hình dưới đây cho thấy các thành phần nhà lắp ghép Ship, mà tôi sẽ giải thích ngay bây giờ.
Vị trí đẻ trứng
Trước tiên, chúng ta cần tạo một Đối tượng trò chơi mới để làm vị trí xuất hiện của chúng ta và đặt nó vào vị trí xuất hiện mong muốn. Sau đó, chúng ta thêm thành phần NetworkStartPosition vào nó.
Bắn đạn
Trước hết, chúng ta cần tạo Bullet prefab. Vì vậy, hãy tạo một GameObject mới có tên là Bullet và biến nó thành một prefab. Để quản lý nó trong mạng, nó cần các thành phần NetworkIdentiy và NetworkTransform, giống như trong nhà lắp ghép của tàu. Tuy nhiên, sau khi một viên đạn được tạo, trò chơi không cần truyền vị trí của nó qua mạng, vì vị trí được cập nhật bởi công cụ vật lý. Vì vậy, chúng ta sẽ thay đổi Tốc độ gửi mạng trong Chuyển đổi mạng thành 0, để tránh quá tải mạng.
Kẻ thù sinh ra
Đầu tiên, chúng ta cần một nhà tiền chế của Kẻ thù. Vì vậy, hãy tạo một GameObject mới tên là Enemy và biến nó thành một prefab. Giống như tàu, kẻ thù sẽ có Rigidbody2D và BoxCollider2D để xử lý các chuyển động và va chạm. Ngoài ra, nó sẽ cần NetworkIdentity và NetworkTransform, để được xử lý bởi NetworkManager. Sau này, chúng tôi cũng sẽ thêm một tập lệnh vào đó, nhưng hiện tại chỉ có thế.
Bị sát thương
Tập lệnh chúng tôi sẽ sử dụng có tên là ReceiveDamage và nó được hiển thị bên dưới. Nó sẽ có các tham số có thể định cấu hình maxHealth, kẻ enemyTag và tiêu destroyOnDeath. Cái đầu tiên được sử dụng để xác định sức khỏe ban đầu của đối tượng. Cái thứ hai được sử dụng để phát hiện va chạm.
Lời kết: bạn cũng có thể mở rộng kiến thức về Unity của mình bằng các khóa học trực tuyến lập trình Game bằng Unity khác như tạo game nhập vai, game FPS,... NIIT-ICT Hà Nội hy vọng bạn đã học được nhiều điều ở bài viết này.