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

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

Giới thiệu Animation  trong lập trình game với Unity3D Giới thiệu Animation  trong lập trình game với Unity3D Giới thiệu Animation  trong lập trình game với Unity3D Giới thiệu Animation  trong lập trình game với Unity3D Giới thiệu Animation  trong lập trình game với Unity3D 5/5 (27 reviews)

Giới thiệu Animation trong lập trình game với Unity3D

Đã đăng 2016-10-24 04:35:38 bởi HowKteam
4 bình luận 4357 lượt xem
Giới thiệu Animation  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;
    private Animator anim;
    GameObject obj;
    GameObject gameController;
	// Use this for initialization
	void Start () {
        obj = gameObject;
        audioSource = obj.GetComponent<AudioSource>();
        audioSource.clip = flyClip;
        anim = obj.GetComponent<Animator>();
        anim.SetFloat("flyPower",0);
        anim.SetBool("isDead", false);

        if (gameController == null)
        {
            gameController = GameObject.FindGameObjectWithTag("GameController");
        }
	}
	
	// Update is called once per frame
	void Update () {
	    if (Input.GetMouseButton(0))
        {
            if (!gameController.GetComponent<GameController>().isEndGame)
                audioSource.Play();
            obj.GetComponent<Rigidbody2D>().AddForce(new Vector2(0, flyPower));            
        }
        anim.SetFloat("flyPower", obj.GetComponent<Rigidbody2D>().velocity.y);
    }

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

    void OnTriggerEnter2D(Collider2D other)
    {
        gameController.GetComponent<GameController>().GetPoint();
    }

    void EndGame()
    {
        anim.SetBool("isDead", true);
        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;
using UnityEngine.UI;
using System.Reflection.Emit;

public class GameController : MonoBehaviour {

    public bool isEndGame;
    bool isStartFirstTime = true;
    int gamePoint = 0;
    public Text txtPoint;
    public GameObject pnlEndGame;
    public Text txtEndPoint;
    public Button btnRestart;

    public Sprite btnIdle;
    public Sprite btnHover;
    public Sprite btnClick;

    // Use this for initialization
    void Start () {
        Time.timeScale = 0;
        isEndGame = false;
        isStartFirstTime = true;
        pnlEndGame.SetActive(false);
    }
	
	// Update is called once per frame
	void Update () {
        if (isEndGame)
        {
            if (Input.GetMouseButtonDown(0) && isStartFirstTime)
            {
                StartGame();
            }
        }       
        else
        {
            if (Input.GetMouseButtonDown(0))
            {
                Time.timeScale = 1;
            }
        } 
	}

    public void RestartButtonClick()
    {
        btnRestart.GetComponent<Image>().sprite = btnClick;
    }

    public void RestartButtonHover()
    {
        btnRestart.GetComponent<Image>().sprite = btnHover;
    }

    public void RestartButtonIdle()
    {
        btnRestart.GetComponent<Image>().sprite = btnIdle;
    }

    public void GetPoint()
    {
        gamePoint++;
        txtPoint.text = "Point: " + gamePoint.ToString();
    }

    void StartGame()
    {
        SceneManager.LoadScene(0);
    }

    public void Restart()
    {
        StartGame();
    }

    public void EndGame()
    {
        isEndGame = true;
        isStartFirstTime = false; ;
        Time.timeScale = 0;
        pnlEndGame.SetActive(true);
        txtEndPoint.text = "Your point\n" + gamePoint.ToString();
    }
}

 

File game Demo

File Assets

Bài sau chúng ta sẽ cùng nhau tìm hiểu về cách biuld game ra đa nền tảng.

Đừ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  
Giới thiệu Animation  trong lập trình game với Unity3D
anhdt2903 2017-09-28 19:41:05

với cả nó hiện cảnh báo : cannot preview transition need an animator controller nữa ạ, mong anh giải đáp giúp em, em cảm ơn 

0 bình chọn
Reply
Giới thiệu Animation  trong lập trình game với Unity3D
anhdt2903 2017-09-28 19:38:21

cho em hỏi một chút là cái animation của em ko chuyển sang được hình lúc con chim bị chết mà chỉ có cụp cánh và cất cánh thôi ạ, em có mò chỉnh transition duration thì lúc hiện được lúc không, không biết cái này là lỗi gì ạ

0 bình chọn
Reply
Giới thiệu Animation  trong lập trình game với Unity3D
Beeruss 2016-11-18 11:36:19
cho e hỏi using UnityEngine.SceneManagement; e dùng bản 5.25 chả thấy đâu thì muốn load lại màn làm cách nào ạ ?
0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
K9 2016-11-19 21:09:24
vậy thì sài Application.LoadScene nhé
0 bình chọn
Reply
Hủy bỏ   hoặc  
Hủy bỏ   hoặc  

Chiến dịch

Kteam - Howkteam Free Education