Thứ Tư, 11 tháng 4, 2018

Hướng dẫn làm background chuyển động lặp lại - Make 2D Parallax Scrolling Background in Unity
Bước 1. Tạo đối tượng Quad:
- Vào GameObject --> 3D Object --> chọn Quad: lúc này tạo ra được đối tượng Quad - đối tượng này sau này chính là background chuyển động lặp lại.

Bước 2. Kéo thả vào một hình background cần làm lặp lại, nhớ sét sang dạng Texture, cụ thể sét như sau:
   . Texture type: Texture
   . Wrap Mode: Repeat
   . Filter Mode: Bilinear
   . Max size: 2048

Bước 3: click vào background texute và kéo thả vào đối tượng Quad ở trên

Bước 4. Tạo mã script chẳng hạn đặt tên: ScrollBackground.cs, viết code:
using UnityEngine;
using System.Collections;

public class ScrollBackground : MonoBehaviour {
public float _Speed = 3f;
public Renderer rend;
// Use this for initialization

void Start() {
rend = GetComponent<Renderer>();
}
// Update is called once per frame
void Update () {
rend.material.mainTextureOffset = new Vector2 (Time.time * _Speed, 0f);
}
}

Bước 5: Gắn script (file ScrollBackground.cs) vào đối tượng Quad ở trên. Bấm và chạy thử kết quả như mong đợi.



Thứ Bảy, 17 tháng 10, 2015

Hướng dẫn clone game FlappyBird
Hướng dẫn clone game FlappyBird
Mô tả các thành phần trong game: ...

Bước 1: Download resource
Trong thư mục Asset lần lượt tạo các thư mục: right click vào Asset --> create --> chọn Folder
- Resources: lưu tài nguyên hình ảnh
- Scripts: lưu mã nguồn
- Animations: lưu các sprite động
- Scenes:
- Prefabs:

Bước 2: Tạo sprite
Kéo tệp tin *.psd vào thư mục Resources --> click chọn hình
Ở mục Inspector:
 - TextureType: chọn Sprite(2D and UI)
 - Sprite Mode: chọn Multiple
--> sau đó chọn Sprite Editor -->
 - Bấm vào mục Slice --> chỉnh sửa lại các sprite cho như ý sao đó nhớ chọn Apply trên cửa sổ Sprite Editor. Như vậy đã tạo ra được các sprite

Bước 3: Tạo hình nền BackGround - Viết Script di chuyển BG
- Tạo GameObject: background gồm 2 thành phần sky (set layer = 0) và đất (set layer = 2). Số layer lớn ở ngoài cùng.
- Tạo Prefabs: cho background --> Các đối tượng tạo ra từ Prefabs thì chỉ cần thay đổi một thuộc tính nào đó trong Prefabs thì tất cả các đối tượng khác cũng thay đổi theo.

  + Thêm tốc độ di chuyển backgroud (lưu ý đặt biến public float SPEED), chỉnh từ giao diện trên prefabs background.
- Viết Scripte cho background: để bg di chuyển
void Update () {
transform.Translate(Vector3.left * SPEED * Time.deltaTime);
}

Bước 4: Tạo BGLooper - để các bg khác đụng vào BGLooper thì sẽ quay lại phía sau
- add Component Box Collider 2D cho.
- add Component Rigidbody 2D, lưu ý: để thuộc tính: Gravity Scale = 0; --> ko có trọng lượng
- Thêm mã nguồn đụng cái BGLooper thì sẽ quay lại
void OnTriggerEnter2D(Collider2D collider) {
if (collider.name == "BGLooper") {
Vector3 pos = this.transform.position;
float widthOfBGObject =  ((BoxCollider2D) collider).size.x;
pos.x += widthOfBGObject * numBG;
this.transform.position = pos;
}
}

Bước 5: Tạo các ống nước
- Tạo GameObject Pipe
- Add 2 cái Box Collider 2D cho ống phía trên và ống phía dưới, set vùng va chạm
- Add component Rigidbody 2D, lưu ý: để thuộc tính: Gravity Scale = 0; --> ko có trọng lượng
- Add script: Pipe
- Tạo Prefads: cho ống nước --> Mục đích: ....
- Viết mã nguồn để ống nước di chuyển
        void Update () {
transform.Translate(Vector3.left * SPEED * Time.deltaTime);
}
- Code ống nước di chuyển gặp BGLooper thì set lại vị trí phía sau:
void OnTriggerEnter2D(Collider2D collider) {
if (collider.name == "BGLooper") {
Vector3 pos = this.transform.position;
pos.x += distancePipe * numBG;
pos.y = Random.Range(MinY, MaxY);
transform.position = pos;
}
}

Bước 6: Tạo animation cho chú chim
- Chọn 3 sprite chim sau đó kéo thả vào vùng Hierachy. Tạo đối tượng GameObject Bird, kéo clony_bird_sprite_12 thả vào Bird. --> chúng ta có gameobject Bird.
- Viết mã nguồn cho chú chim chuyển động
public float jumpVelocity = 3.0f;
float g = -9.8f;

void Update () {
//x = x0 + v0 * t + a * t * t /2
transform.position += Vector3.up * (jumpVelocity * Time.deltaTime + g * Time.deltaTime * Time.deltaTime / 2);
//vt = v0 + a * t
jumpVelocity += g * Time.deltaTime;

if (Input.GetMouseButtonDown(0)) {
jumpVelocity = 2.5f;
}
}
- Xét va chạm giữa chú chim và ống nước:
 + Đặt tag cho các ống nước là: Pipe  --> để sau này dễ tìm các đối tượng là loại ống nước
void OnTriggerEnter2D(Collider2D collider) {
if ( collider.gameObject.tag == "Pipe")
{
jumpVelocity = 0;
}
}

---Hướng dẫn cách debug trên Unity.