[Hướng Dẫn] Hướng dẫn làm game Platform ZombieRun
Xin chào các bạn, hôm nay mình sẽ hướng dẫn các bạn làm 1 game hoàn thiện trên Unity.Thể loại game là game Run và cách chơi giống như tựa game nổi tiếng “Zombie Tsunami”. Đây là sản phẩm demo các bạn có thể tham khảo ở đây.
https://dl.dropboxusercontent.com/s/8r4ifa4d52gftva/Zombie.html
Bây giờ chúng ta bắt đầu, nếu trong quá trình hướng dẫn có chổ nào chưa rõ các bạn có thể hỏi ở dưới, mình sẽ trả lời sớm nhất có thể.
[chapter]1. Tạo dự án.[/chapter]
Các bạn nên sử dụng Unity phiên bản 5. trở lên để được hỗ trợ tốt hơn nhé
[align=center][/align]
[chapter]2. Tạo cấu trúc thư mục như sau:[/chapter]
[align=center][/align]
[chapter]3. Bỏ hình ảnh/Sprite vào game (mình sẽ share các bạn bộ data này ở cuối bài )[/chapter]
a) Đầu tiên là mặt đất(Ground) để nhân vật chúng ta có thể đứng lên
[align=center][/align]
[align=center][/align]
b) Tạo Character(MC) mình sẽ cung cấp Image cho các bạn ở cuối bài
[align=center][/align]
Add Component --> Physics 2D--> Rigidbody 2D
[align=center][/align]
-->Bấm Run, chúng ta sẽ thấy MC rớt xuống, và rớt qua Ground luôn, để MC có thể đứng lên ground ta phải add box collider cho MC
Add Component --> Physics 2D --> Box collider 2D
-->Bấm Run, MC đã đứng được trên ground
Các bạn lưu ý nhé để MC đứng được trên ground chúng ta phải có
Ground --> Box collider2D
MC --> Box collider 2D và Rigidbody2D để MC có thể rớt xuống theo trọng lực.
[align=center][/align]
--> Run và touch lên màn hình chúng ta thấy MC đã nhảy, tuy nhiên nếu chúng ta touch liên tục thì MC sẽ nhảy liên tục, cái mà chúng ta muốn đó là chỉ khi nào MC đứng trên ground thì mới cho nhảy,
Khi nào MC đứng trên Ground thì set biến này bằng true, còn lại là false
- OnCollisionEnter2D là hàm kiểm tra 2 va chạm khi nó vửa xảy ra, như vậy khi MC đang ở trên không và rớt xuống chạm ground thì set = true.
- Và khi bấm để MC nhảy ta set bằng false. Và ta có script MC như sau:
--> Run ta sẽ thấy MC nhảy và chỉ nhảy khi đang ở trên mặt đất
• Thêm code cho MC di chuyển trong hàm update
--> Run ta sẽ thấy MC vừa di chuyển vừa nhảy.
• Thêm code để camera di chuyển theo MC, position X của camera sẽ bằng với position X của MC
-->Run , chúng ta đã có 1 game cơ bản về run và Jump.
Các bạn có thể down tài nguyên và project tại đây.
https://dl.dropboxusercontent.com/s/wfc32cmfw9uiur0/Assets.rar
Tuy bài này mình chỉ copy - paste nhưng nếu bạn thăc mắc về bài này thì mình hoàn toàn có thể trả lời :D Seri này còn 3 bài nữa mình vừa học vừa làm nên làm ok và hiểu thì mình mới up tiếp
Nguồn : https://www.facebook.com/gpcdanang
https://dl.dropboxusercontent.com/s/8r4ifa4d52gftva/Zombie.html
Bây giờ chúng ta bắt đầu, nếu trong quá trình hướng dẫn có chổ nào chưa rõ các bạn có thể hỏi ở dưới, mình sẽ trả lời sớm nhất có thể.
[chapter]1. Tạo dự án.[/chapter]
Các bạn nên sử dụng Unity phiên bản 5. trở lên để được hỗ trợ tốt hơn nhé
[align=center][/align]
[chapter]2. Tạo cấu trúc thư mục như sau:[/chapter]
[align=center][/align]
[chapter]3. Bỏ hình ảnh/Sprite vào game (mình sẽ share các bạn bộ data này ở cuối bài )[/chapter]
a) Đầu tiên là mặt đất(Ground) để nhân vật chúng ta có thể đứng lên
[align=center][/align]
- Sprite Editor để tạo frame cho sprite
- Kéo Ground 1 lên Scene, vì MC sẽ đứng được lên nó nên ta sẽ thêm “Box collider 2D”
[align=center][/align]
- Thêm tag name cho Ground để dễ quản lý sau này
b) Tạo Character(MC) mình sẽ cung cấp Image cho các bạn ở cuối bài
- Tạo frame cho MC, các bạn có thể tham khảo cách tạo ra các frame tại đây ( Tạo dự án game 2D, Sprite và GameObject : Link).
- Kéo 1 frame lên Scene để tạo GameObject MC.
- Tạo Animation cho MC
[align=center][/align]
- Vào tab Animation hoặc bấm Ctrl + 6.
- Bấm Create để tạo animation và đặt tên là “Run”
- . Kéo tất cả các frame của Animation Run lên để tạo animation cho MC
- Gắn Physical cho MC
Add Component --> Physics 2D--> Rigidbody 2D
[align=center][/align]
-->Bấm Run, chúng ta sẽ thấy MC rớt xuống, và rớt qua Ground luôn, để MC có thể đứng lên ground ta phải add box collider cho MC
Add Component --> Physics 2D --> Box collider 2D
-->Bấm Run, MC đã đứng được trên ground
Các bạn lưu ý nhé để MC đứng được trên ground chúng ta phải có
Ground --> Box collider2D
MC --> Box collider 2D và Rigidbody2D để MC có thể rớt xuống theo trọng lực.
- Điều khiển MC di chuyển và nhảy
[align=center][/align]
void Update ()
{
if(Input.GetMouseButtonDown(0) ) // Lấy sự kiện touch lên màn hình
{
GetComponent<Rigidbody2D>().AddForce(new Vector2(0, 8f), ForceMode2D.Impulse); //Tạo lực đẩy để MC nhảy
}
}
--> Run và touch lên màn hình chúng ta thấy MC đã nhảy, tuy nhiên nếu chúng ta touch liên tục thì MC sẽ nhảy liên tục, cái mà chúng ta muốn đó là chỉ khi nào MC đứng trên ground thì mới cho nhảy,
public bool _isOnGround = true;
Khi nào MC đứng trên Ground thì set biến này bằng true, còn lại là false
void OnCollisionEnter2D(Collision2D other)
{
if(other.transform.tag.CompareTo("Ground")== 0)
{
_isOnGround = true;
}
}
- OnCollisionEnter2D là hàm kiểm tra 2 va chạm khi nó vửa xảy ra, như vậy khi MC đang ở trên không và rớt xuống chạm ground thì set = true.
- Và khi bấm để MC nhảy ta set bằng false. Và ta có script MC như sau:
using UnityEngine;
using System.Collections;
public class MC : MonoBehaviour {
public bool _isOnGround = true;
void Update ()
{
if(Input.GetMouseButtonDown(0) && _isOnGround)
{
GetComponent<Rigidbody2D>().AddForce(new Vector2(0, 8f), ForceMode2D.Impulse);
_isOnGround = false;
}
}
void OnCollisionEnter2D(Collision2D other)
{
if(other.transform.tag.CompareTo("Ground")== 0)
{
_isOnGround = true;
}
}
}
--> Run ta sẽ thấy MC nhảy và chỉ nhảy khi đang ở trên mặt đất
• Thêm code cho MC di chuyển trong hàm update
float _speed = 3.5f;
void Update ()
{
transform.position = new Vector3(transform.position.x + _speed*Time.deltaTime, transform.position.y ,transform.position.z);
}
--> Run ta sẽ thấy MC vừa di chuyển vừa nhảy.
• Thêm code để camera di chuyển theo MC, position X của camera sẽ bằng với position X của MC
void Update ()
{
if(Input.GetMouseButtonDown(0) && _isOnGround)
{
GetComponent<Rigidbody2D>().AddForce(new Vector2(0, 8f), ForceMode2D.Impulse);
_isOnGround = false;
}
transform.position = new Vector3(transform.position.x + _speed*Time.deltaTime, transform.position.y ,transform.position.z);
Camera.main.transform.position = new Vector3(transform.position.x,Camera.main.transform.position.y,Camera.main.transform.position.z);
}
-->Run , chúng ta đã có 1 game cơ bản về run và Jump.
Các bạn có thể down tài nguyên và project tại đây.
https://dl.dropboxusercontent.com/s/wfc32cmfw9uiur0/Assets.rar
Tuy bài này mình chỉ copy - paste nhưng nếu bạn thăc mắc về bài này thì mình hoàn toàn có thể trả lời :D Seri này còn 3 bài nữa mình vừa học vừa làm nên làm ok và hiểu thì mình mới up tiếp
Nguồn : https://www.facebook.com/gpcdanang