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

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

Giới thiệu audio - Âm thanh - trong lập trình game với Unity3D Giới thiệu audio - Âm thanh - trong lập trình game với Unity3D Giới thiệu audio - Âm thanh - trong lập trình game với Unity3D Giới thiệu audio - Âm thanh - trong lập trình game với Unity3D Giới thiệu audio - Âm thanh - trong lập trình game với Unity3D 5/5 (27 reviews)

Giới thiệu audio - Âm thanh - trong lập trình game với Unity3D

Đã đăng 2016-10-24 04:32:08 bởi HowKteam
0 bình luận 4026 lượt xem
Giới thiệu audio - Âm thanh - trong lập trình game với Unity3D 5 /5 stars (1 reviews)
 

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 BirController : MonoBehaviour {

    public float flyPower = 100;

    public AudioClip flyClip;
    public AudioClip gameOverClip;

    private AudioSource audioSource;

    GameObject obj;
    GameObject gameController;
	// Use this for initialization
	void Start () {
        obj = gameObject;
        audioSource = obj.GetComponent<AudioSource>();
        audioSource.clip = flyClip;

        if (gameController == null)
        {
            gameController = GameObject.FindGameObjectWithTag("GameController");
        }
	}
	
	// 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()
    {
        audioSource.clip = gameOverClip;
        audioSource.Play();
        gameController.GetComponent<GameController>().EndGame();
    }
}

Code BirdController.cs

using UnityEngine;
using System.Collections;

public class BirController : MonoBehaviour {

    public float flyPower = 100;

    public AudioClip flyClip;
    public AudioClip gameOverClip;

    private AudioSource audioSource;

    GameObject obj;
    GameObject gameController;
	// Use this for initialization
	void Start () {
        obj = gameObject;
        audioSource = obj.GetComponent<AudioSource>();
        audioSource.clip = flyClip;

        if (gameController == null)
        {
            gameController = GameObject.FindGameObjectWithTag("GameController");
        }
	}
	
	// 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()
    {
        audioSource.clip = gameOverClip;
        audioSource.Play();
        gameController.GetComponent<GameController>().EndGame();
    }
}

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 {

    bool isEndGame;
	// Use this for initialization
	void Start () {
        Time.timeScale = 0;
        isEndGame = false;
    }
	
	// Update is called once per frame
	void Update () {
        if (isEndGame)
        {
            if (Input.GetMouseButtonDown(0))
            {
                SceneManager.LoadScene(0);
            }
        }       
        else
        {
            if (Input.GetMouseButtonDown(0))
            {
                Time.timeScale = 1;
            }
        } 
	}

    public void EndGame()
    {
        isEndGame = true;
        Time.timeScale = 0;
    }
}

 

File game Demo

File Assets

Bài sau chúng ta sẽ cùng nhau tìm hiểu về UI làm menu.

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

Chia sẻ:
Thảo luận Hỏi và đáp Báo lỗi bài viết
Hủy bỏ   hoặc  
Hủy bỏ   hoặc  
Hủy bỏ   hoặc  

Chiến dịch

Kteam - Howkteam Free Education