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

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

Ο παρακάτω οδηγός είναι για την δημιουργία ενός απλού παιχνιδιού, για την γρήγορη εκμάθηση της 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.

Author Bio

Gearloose
Gearloose

Καλώς ήρθατε στο blog μου. Το όνομα μου είναι Άκης Μπαρέκας. Είμαι freelance web developer. Μου αρέσει να φτιάχνω διάφορα, είτε για δουλειά, είτε για χόμπι. Όταν έχω χρόνο, ανεβάζω videos στο YouTube, γράφω tutorials, μοιράζομαι τεχνολογικά νέα στο Facebook ή γράφω άρθρα που αφορούν το PC Hardware.