[Hướng Dẫn] Hướng dẫn làm game Platform ZombieRun

FreyrFreyr Posts: 14Registered
edited August 2019 in Unity
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]12363040_487971981375069_8836856343029562852_opng[/align]

[chapter]2. Tạo cấu trúc thư mục như sau:[/chapter]

[align=center]12371247_487972151375052_2232085520407041843_opng[/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]12356928_487977071374560_6892230182236505198_opng[/align]
  • Sprite Editor để tạo frame cho sprite
[align=center]12304081_487973158041618_6843687791344823161_opng[/align]
  • Kéo Ground 1 lên Scene, vì MC sẽ đứng được lên nó nên ta sẽ thêm “Box collider 2D”
                               Add Component --> Physics 2D --> Box collider 2D

[align=center]12366208_487977334707867_1100646228476455059_npngohf7b6baab06880e5b6cc84d20da66f939oe5762E945__gda__1466345704_43d18f61540aafbdda546f8be66d36a5[/align]
  • Thêm tag name cho Ground để dễ quản lý sau này
[align=center]12313653_487977688041165_4231884071615494916_npngoh3bbba19a971ecaf6b7297bfccea14f5eoe576AB29C[/align]

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.
[align=center]12362977_487978264707774_7954869837400569779_opng[/align]
  • Tạo Animation cho MC 
                    Add Component --> Miscellaneous --> Animator

[align=center]11140083_487978554707745_5892737999289714221_npngoh43d37c499e0e5c1a8c24e8ea491d1b61oe572A60F4__gda__1463390658_c8a8194d50ccd8cf44f692fdc4be550d[/align]
  • Vào tab Animation hoặc bấm Ctrl + 6.
[align=center]12357220_487978998041034_3974643197534112002_opng[/align]
  • Bấm Create để tạo animation và đặt tên là “Run”
[align=center]12370891_487979098041024_5840158269207482544_opng[/align]
  • . Kéo tất cả các frame của Animation Run lên để tạo animation cho MC
                -->Bấm Run để thấy kết quả nhé, MC đã có animation run
  • Gắn Physical cho MC
                  MC sẽ có xu hướng rớt xuống theo trọng lực, vì vậy ta sẽ gắn Gravity cho MC
                  Add Component --> Physics 2D--> Rigidbody 2D

[align=center]12356776_487979274707673_4974276360161557242_opng[/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
                       Tạo script đặt tên MC, kéo thả vào Inspector MC

[align=center]12322579_487979488040985_6279184416946953789_opng[/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
Sign In or Register to comment.