Φτιάξτε ένα Breakout Game (Beginners - Unity)

Ο παρακάτω οδηγός είναι για την δημιουργία ενός απλού παιχνιδιού, για την γρήγορη εκμάθηση της Unity.

Παρακάτω είναι ο κώδικας των στοιχείων του παιχνιδιού σε C#.

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();
}

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(); } }

TimedDestroy

using UnityEngine;
using System.Collections;
public class TimedDestroy : MonoBehaviour {

public float destroyTime = 1f;

// Use this for initialization void Start () {

Destroy (gameObject, destroyTime);

}

}

Ο οδηγός δεν είναι δικός μου αλλά είναι από την σειρά μαθημάτων της Unity.

loading