Hướng dẫn làm game 2D bằng Unity

Trước khi bắt đầu code phần gameplay, thì chúng ta phải hình dung chúng ta cần làm cái gì trước. Trong ví dụ này mình tập trung về 1 loại game cổ điển là game né chướng ngại vật.

Chúng ta sẽ cần 2 đối tượng chính là chướng ngại vật và người chơi.

Chúng ta cũng sẽ cần phải làm 1 phần tự động sinh ra chướng ngại vật, nhưng nó sẽ không được hiện thị ở phần view của người chơi mà phải ở trên phần view để người chơi không thấy được nó.

Hướng dẫn làm game 2D bằng Unity

Chuẩn bị giao diện cho phần gameplay

Đầu tiên các bạn cần tạo ra 1 sence mới để chứa giao diện mới của phần gameplay.

Click chuột phải vào thư mực Scenes -> Create -> Scene. Sau đó các bạn đặt tên nó là Gameplay.

Sau đó các bạn hãy click đúp vào nó để mở lên.

Hướng dẫn làm game 2D bằng Unity

Tiếp theo chúng ta sẽ tạo sẵn những object cần thiết cho game của chúng ta bằng cách

Click chuột phải -> chọn như hình, và hay đặt tên như hình để dễ làm việc

Hướng dẫn làm game 2D bằng Unity

Hướng dẫn làm game 2D bằng Unity

Sau đó chúng ta reset ví trí của tất cả object về trung tập trung bằng cách

click chuột phải ở trường Transform -> reset

Hướng dẫn làm game 2D bằng Unity

Tiếp đến các bạn hãy down 3 file này về và ném vào thư mục assets. 3 file này mục đích để ta set background cho nó đẹp thôi, các bạn có thể thay 2 square file này bằng 1 file ảnh bất kì cũng được.

Link set background tại đây

Hướng dẫn làm game 2D bằng Unity

Tiếp theo các bạn chọn Object background -> kéo thả Square vào chỗ sprite để nó lấy ảnh background.

Hướng dẫn làm game 2D bằng Unity

Tiếp đến các bạn hãy set kích thước của background như sau:

  • Position: là ví trị của object
  • Rotation: là độ nguyên góc nhìn ở 360 độ nhưng vì chúng ta làm game 2D nên cài này không quan trọng
  • Scale: là nơi chúng ta thay đổi kích thước của object.

Ở phần Addition Settings -> Order in Layer -> đổi 0 thành -1. mục đích để background của chúng là xuống ở phía sau, tránh việc nó hiện thị đè lên các Object khác.

Hướng dẫn làm game 2D bằng Unity

Các bạn có thể thay đổi theo ý muốn ở phần Scale nhé.

Hướng dẫn làm game 2D bằng Unity

Note: Khi chọn độ rộng các bạn hãy nhớ lưu ý rằng là ta phải chia chiều rộng sao cho ta đủ chỗ chứa cả 5 chướng ngại vật như sau

Hướng dẫn làm game 2D bằng Unity

Tiếp chúng ta sẽ set ví trí của camera để nó có thể thấy background của chúng bằng cách giảm tọa độ Z xuống còn -10. Vì nếu z = 0 thì nó sẽ ở cùng vị trí với background nó sẽ bị ghi đè lên nên ta không thể thấy gì.

Hướng dẫn làm game 2D bằng Unity

Tiếp chúng ta sẽ thiết lập người chơi. Cũng tương tự như background các bạn hãy kèo thả Square vào trong Sprite sau đó thay đổi kích thước và ví trí của nó.

Hướng dẫn làm game 2D bằng Unity

Chúng ta hãy đánh dấu những object sau bằng cách chọn object cần đánh dấu -> chọn nút phải -> chọn icon để đánh dấu

Hướng dẫn làm game 2D bằng Unity

Hướng dẫn làm game 2D bằng Unity

Làm tương tự với các spawnPoint1, spawnPoint2, spawnPoint3, spawnPoint4, spawnPoint5.

Hướng dẫn làm game 2D bằng Unity

Tiếp chúng ta di chuyển Object BlockSpawner lên trên để không cho người chơi thấy được nó.

Hướng dẫn làm game 2D bằng Unity

Sau đó chúng ta bố trí vị trí của các SpawnPoint cho phù hợp.

bằng cách click vào nút 4 mũi tên -> chọn object -> chọn mũi tên đỏ dể di chuyển qua trái và phải.

Hướng dẫn làm game 2D bằng Unity

Sau đó chúng ta bố trí vị trí của các SpawnPoint cho phù hợp.

bằng cách click vào nút 4 mũi tên -> chọn object -> chọn mũi tên đỏ dể di chuyển qua trái và phải.

Hướng dẫn làm game 2D bằng Unity

Tiếp đến chúng ta sẽ tạo 1 object chướng ngại vật

Chúng ta click chuột phải -> duplicate để tạo 1 object giống y như player

Hướng dẫn làm game 2D bằng Unity

Sau đó các bạn hãy rename và thay đổi kích thước của Object Block đó sao cho vừa ý các bạn

Hướng dẫn làm game 2D bằng Unity

Note: khi chọn chiều rộng ta phải chọn kích thước sao cho nó tương ứng với 5 spawn point

Sau khi tạo xong các bạn hãy kéo thả Object Block vừa tạo vào bảng bên dưới. sau khi kéo xong hãy xóa Object Block bên bảng bên trái đi.

Hướng dẫn làm game 2D bằng Unity

Code chức năng cho player

Click chuột phải chọn Create -> Sscript C# -> đặt tên là Player

Hướng dẫn làm game 2D bằng Unity

Hướng dẫn làm game 2D bằng Unity

Mở file Player vừa tạo lên sau đó chúng ta sẽ code như sau:

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class Player : MonoBehaviour { public float speed = 150f; private Rigidbody2D rb; public float mapWidth = 3.25f; public float MouseSpeed = 5f; public float slowness = 10f; void Start() { rb = GetComponent<Rigidbody2D>(); } void FixedUpdate() { float x = Input.GetAxis("Horizontal") * Time.fixedDeltaTime * speed; if (x == 0) { x = Input.GetAxis("Mouse X") * Time.fixedDeltaTime * speed * MouseSpeed; } Vector2 newPosition = rb.position + Vector2.right * x; newPosition.x = Mathf.Clamp(newPosition.x, -mapWidth, mapWidth); rb.MovePosition(newPosition); } void OnCollisionEnter2D() { EndGame(); } public void EndGame() { StartCoroutine(RestartLevel()); } IEnumerator RestartLevel() { Time.timeScale = 1f / slowness; Time.fixedDeltaTime = Time.fixedDeltaTime / slowness; yield return new WaitForSeconds(2f / slowness); Time.timeScale = 1f; Time.fixedDeltaTime = Time.fixedDeltaTime * slowness; SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex); } }

Sau đó các bạn hãy mở file Gamemanager mà chúng ta đã code ở phần 1 rồi sửa lại thành như sau:

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class GameManager : MonoBehaviour { public GameObject CreditUI; public float slowness = 10f; public void EndGame() { StartCoroutine(RestartLevel()); } IEnumerator RestartLevel() { Time.timeScale = 1f / slowness; Time.fixedDeltaTime = Time.fixedDeltaTime / slowness; yield return new WaitForSeconds(2f / slowness); Time.timeScale = 1f; Time.fixedDeltaTime = Time.fixedDeltaTime * slowness; } public void exitgame() { Application.Quit(); } public void openCredit() { CreditUI.SetActive(true); } public void closeCredit() { CreditUI.SetActive(false); } public void startGame() { SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1); } public void returnToMenu() { Time.timeScale = 1f; SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex - 1); } }

Tiếp các bạn hãy tạo tiếp 1 Script đặt tên là BlockSpawner và mở nó lên rồi code như sau:

using System.Collections; using System.Collections.Generic; using UnityEngine; public class BlockSpawner : MonoBehaviour { public Transform[] spawnPoints; public GameObject blockPrefab; public float TimeSpawnBetweenWave = 1f; private float timeToSpawn = 2f; void Update() { if (Time.time >= timeToSpawn) { spawnBlock(); timeToSpawn = Time.time + TimeSpawnBetweenWave; } } void spawnBlock() { int randomIndex = Random.Range(0, spawnPoints.Length); for (int i = 0; i < spawnPoints.Length; i++) { if (randomIndex != i) { Instantiate(blockPrefab, spawnPoints[i].position, Quaternion.identity); } } } }

Thêm code di chuyển vào trong đối tượng Player

Các bạn chọn Add Component -> Rigidbody 2D

Hướng dẫn làm game 2D bằng Unity

Hướng dẫn làm game 2D bằng Unity

ở Component Rigidbody 2D mới thêm, bạn hãy chọn Body type -> Kinematic

Hướng dẫn làm game 2D bằng Unity

Tiếp đến chúng ta thêm Script Player vào trong object Player

Hướng dẫn làm game 2D bằng Unity

Các bạn hãy tự thay đổi thông số này sao cho phù hợp.

Hướng dẫn làm game 2D bằng Unity

Tiếp đến các bạn chọn add component -> box collider 2D

Hướng dẫn làm game 2D bằng Unity

Các có thể bấm nút play để thử chạy demo điều khiển Player trước  

Hướng dẫn làm game 2D bằng Unity

Thêm trường vào bên trong Block

Click chọn Block -> Add component -> rigidbody 2D

Click chọn Block -> Add component -> Box Collider 2D

Hướng dẫn làm game 2D bằng Unity

Hướng dẫn làm game 2D bằng Unity

Hướng dẫn làm game 2D bằng Unity

Tiếp chúng ta tạo 1 script BlockDelete và code như sau:

using System.Collections; using System.Collections.Generic; using UnityEngine; public class BlockDelete : MonoBehaviour { public float gravitySpeedRateAdd = 10f; public float deleteAt = -10f; void Start() { GetComponent<Rigidbody2D>().gravityScale += Time.timeSinceLevelLoad / gravitySpeedRateAdd; } void Update() { if (transform.position.y < deleteAt) { Destroy(gameObject); } } }

Sau đó các bạn hãy click chọn Object Block sau đó kéo thả BlockDelete vào bảng phải bên dưới như hình

Hướng dẫn làm game 2D bằng Unity

Tiếp đến ta click chọn BlockSpawner -> kéo thả Script BlockSpawner vừa tạo vào

Hướng dẫn làm game 2D bằng Unity

Sau đó hãy kéo các đối tượng vào trong Object như hình

Hướng dẫn làm game 2D bằng Unity

Như vậy là giờ game của chúng ta đã hoàn thành giờ chúng ta chỉ cần thêm 1 cái nút để quay trở lại trang menu là xong.

Bằng cách click chuột phải -> UI -> button. Các bạn hãy tự set ví trị cho phù hợp.

Hướng dẫn làm game 2D bằng Unity

Hướng dẫn làm game 2D bằng Unity

Cuối cùng chúng ta chèn code vào trong button vừa tạo

Hướng dẫn làm game 2D bằng Unity

như vậy là xong. các bạn có thể bấm nút play để trải nghiệm game trước khi build 

Hướng dẫn làm game 2D bằng Unity

Build Setting

Các bạn vào File -> build setting -> add Open Scenes

Sau đó hãy chọn platform muốn build

Hướng dẫn làm game 2D bằng Unity

Tiếp theo hãy chọn Player setting ở đây sẽ chỉnh 1 số thông số

ở đây các bạn có thể set icon cho project của mình nữa, nó có 1 số tính năng khá hay nếu các bạn hứng thú có thể tự trải nghiệm

Hướng dẫn làm game 2D bằng Unity

Nhự vậy là xong giờ bạn chỉ việc click nút build để build project.

Tổng kết:

Như vậy là các đã hoàn thành 1 game hoàn chỉnh. Hi vọng qua bài này các bạn đã có thể nắm sơ cách để làm việc với unity. Chúc các bạn thành công. 

Bạn đã đánh giá bài viết này rồi, thử lại sau nhé !

chưa có bình luận nào ...