Unity Official Tutorial --- CREATING A BREAKOUT GAME FOR BEGINNERS

来源:互联网 发布:ruby for windows 编辑:程序博客网 时间:2024/05/20 05:53

ATTENTION PLEASE:
If you wanna learn official tutorials, please single click the hyperlink below. This blog is just used to MAKE PDF for learning.

CREATING A BREAKOUT GAME FOR BEGINNERS

In this live training session we look at creating a Breakout style game including basic game mechanics, user interface and a game manager script.

Paddle

using UnityEngine;using System.Collections;public class Paddle : MonoBehaviour {    public float paddleSpeed = 1f;    private Vector3 playerPos = new Vector3 (0, -9.5f, 0);    void Update ()     {        float xPos = transform.position.x + (Input.GetAxis("Horizontal") * paddleSpeed);        playerPos = new Vector3 (Mathf.Clamp (xPos, -8f, 8f), -9.5f, 0f);        transform.position = playerPos;    }}

Ball

using UnityEngine;using System.Collections;public class Ball : MonoBehaviour {    public float ballInitialVelocity = 600f;    private Rigidbody rb;    private bool ballInPlay;    void Awake () {        rb = GetComponent<Rigidbody>();       }    void Update () {        if (Input.GetButtonDown("Fire1") && ballInPlay == false)        {            transform.parent = null;            ballInPlay = true;            rb.isKinematic = false;            rb.AddForce(new Vector3(ballInitialVelocity, ballInitialVelocity, 0));        }    }}   

GM

using UnityEngine;using System.Collections;using UnityEngine.UI;public class GM : MonoBehaviour {    public int lives = 3;    public int bricks = 20;    public float resetDelay = 1f;    public Text livesText;    public GameObject gameOver;    public GameObject youWon;    public GameObject bricksPrefab;    public GameObject paddle;    public GameObject deathParticles;    public static GM instance = null;    private GameObject clonePaddle;    // Use this for initialization    void Awake ()  {        if (instance == null)            instance = this;        else if (instance != this)            Destroy (gameObject);        Setup();    }    public void Setup(){        clonePaddle = Instantiate(paddle, transform.position, Quaternion.identity) as GameObject;        Instantiate(bricksPrefab, transform.position, Quaternion.identity);    }    void CheckGameOver(){        if (bricks < 1){            youWon.SetActive(true);            Time.timeScale = .25f;            Invoke ("Reset", resetDelay);        }        if (lives < 1){            gameOver.SetActive(true);            Time.timeScale = .25f;            Invoke ("Reset", resetDelay);        }    }    void Reset(){        Time.timeScale = 1f;        Application.LoadLevel(Application.loadedLevel);    }    public void LoseLife(){        lives--;        livesText.text = "Lives: " + lives;        Instantiate(deathParticles, clonePaddle.transform.position, Quaternion.identity);        Destroy(clonePaddle);        Invoke ("SetupPaddle", resetDelay);        CheckGameOver();    }    void SetupPaddle(){        clonePaddle = Instantiate(paddle, transform.position, Quaternion.identity) as GameObject;    }    public void DestroyBrick(){        bricks--;        CheckGameOver();    }}

Bricks

using UnityEngine;using System.Collections;public class Bricks : MonoBehaviour {    public GameObject brickParticle;    void OnCollisionEnter (Collision other) {        Instantiate(brickParticle, transform.position, Quaternion.identity);        GM.instance.DestroyBrick();        Destroy(gameObject);    }}

DeadZone

using UnityEngine;using System.Collections;public class DeadZone : MonoBehaviour {    void OnTriggerEnter (Collider col){        GM.instance.LoseLife();    }}

TimedDestory

using UnityEngine;using System.Collections;public class TimedDestroy : MonoBehaviour {    public float destroyTime = 1f;    // Use this for initialization    void Start () {        Destroy (gameObject, destroyTime);    }}
0 0