Giới thiệu đối tượng vật lý 2D, xử lý va chạm trong lập trình game với Unity3D

Lập trình game Flappy bird với unity3D

5.0 (1 đánh giá)
Tạo bởi HowKteam Cập nhật lần cuối 15:34 19-03-2022 25.756 lượt xem 15 bình luận
Tác giả/Dịch giả: HowKteam
Học nhanh

Danh sách bài học

Giới thiệu đối tượng vật lý 2D, xử lý va chạm trong lập trình game với Unity3D

Không có gì tuyệt vời hơn là luyện tập với ví dụ thực tế. Nào cùng nhau thử thách bản thân với trò chơi nổi tiếng: Flappy bird.

Bạn nên có kiến thức về:

  • Lập trình C# cơ bản
  • Class
  • OOP trong C#

Code BackGroundMove.cs

using UnityEngine;
using System.Collections;

public class BackGroundMove : MonoBehaviour {

    public float moveSpeed;
    public float moveRange;

    private Vector3 oldPosition;
    private GameObject obj;
	// Use this for initialization
	void Start () {
        obj = gameObject;
        oldPosition = obj.transform.position;
        moveSpeed = 5;
        moveRange = 20;
	}
	
	// Update is called once per frame
	void Update () {
        obj.transform.Translate(new Vector3(-1 * Time.deltaTime * moveSpeed, transform.position.y, 0));

        if (Vector3.Distance(oldPosition, obj.transform.position) > moveRange)
        {
            obj.transform.position = oldPosition;
        }
    }
}

Code BirdController.cs

using UnityEngine;
using System.Collections;

public class BirController : MonoBehaviour {

    public float flyPower = 100;

    GameObject obj;
	// Use this for initialization
	void Start () {
        obj = gameObject;
	}
	
	// Update is called once per frame
	void Update () {
	    if (Input.GetMouseButton(0))
        {
            audioSource.Play();
            obj.GetComponent<Rigidbody2D>().AddForce(new Vector2(0, flyPower));
        }
	}

    void OnCollisionEnter2D(Collision2D other)
    {
        EndGame();
    }    

    void EndGame()
    {
        Debug.Log("End game");
    }
}

Code WallMove.cs

using UnityEngine;
using System.Collections;

public class WallMove : MonoBehaviour {

    public float moveSpeed;
    public float minY;
    public float maxY;

    public float oldPosition;
    private GameObject obj;
    // Use this for initialization
    void Start()
    {
        obj = gameObject;
        oldPosition = 10;
        moveSpeed = 5;
        minY = -1;
        maxY = 1;
    }

    // Update is called once per frame
    void Update()
    {
        obj.transform.Translate(new Vector3(-1 * Time.deltaTime * moveSpeed, 0, 0));        
    }

    void OnTriggerEnter2D(Collider2D other)
    {
        if (other.gameObject.tag.Equals("ResetWall"))
            obj.transform.position = new Vector3(oldPosition, Random.Range(minY, maxY + 1), 0);
    }
}

Code GameController.cs

using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;

public class GameController : MonoBehaviour {

	// Use this for initialization
	void Start () {
    }
	
	// Update is called once per frame
	void Update () {
	}

    public void EndGame()
    {
    }
}

File game Demo

File Assets

Bài sau chúng ta sẽ cùng nhau tìm hiểu về cách lấy thuộc tính từ đối tượng khác.

Đừng quên: “Luyện tập – Thử thách – Không ngại khó


Tải xuống

Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Giới thiệu đối tượng vật lý 2D, xử lý va chạm trong lập trình game với Unity3D dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên likeshare để ủng hộ Kteam và tác giả nhé!

Project

Nếu việc thực hành theo hướng dẫn không diễn ra suôn sẻ như mong muốn. Bạn cũng có thể tải xuống PROJECT THAM KHẢO ở link bên dưới!


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Nội dung bài viết

Tác giả/Dịch giả

Khóa học

Lập trình game Flappy bird với unity3D

Lập trình game Flappy bird với unity3D

Đánh giá

K9 SuperAdmin, KquizAdmin, KquizAuthor đã đánh giá 19:38 01-03-2019

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
TuanAIpro đã bình luận 14:57 18-04-2020

Các cây cột vẫn không lặp lại 

memorydoraemon đã bình luận 11:08 17-09-2017

Anh ơi, 2 vật có khối lượng khác nhau vẫn rơi vs tốc độ như nhau trong môi trường chân không nên a chỉnh cái mass lên 1000 nó vẫn rơi vs tốc độ như nhau à :V 

duyhouse đã bình luận 07:41 06-09-2017

Mình viết xong cuối cùng wall reset được mà con chim ko bay được trc đó nó còn bay được

 

duyhouse đã bình luận 16:24 03-09-2017

::V

DungC# đã bình luận 11:27 06-07-2017

Anh có thể nào làm video một cách chậm rãi ko anh ? Cứ vèo vèo em ko theo kịp nữa !

Không có video.