segunda-feira, 7 de dezembro de 2015

Código Básico de um jogo em 2D, Unity Engine c#

Código Responsável pelo Dano.

public class tiro : MonoBehaviour {
int danoBatata = 1;
// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {

}

void OnCollisionEnter2D(Collision2D col)
{
if (col.collider.tag == "inimigo"){
col.collider.SendMessage("dano",danoBatata);
Destroy(gameObject);
}
}
}

Código responsável pela movimentação do Player.

using UnityEngine;
using System.Collections;

public class Player : MonoBehaviour
{
public GameObject bala;
    public GameObject pontoDeBala;
    public float velocidade;
    private Animator animator;
    public BarraVida barraVida;
public int vida=100;
    // Use this for initialization
    void Start()
    {
        animator = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        Movimento();
        Tiro();

    }


    void Tiro()
    {
        if (Input.GetButtonDown("Fire1"))
        {
            GameObject go = Instantiate(bala, pontoDeBala.transform.position, pontoDeBala.transform.rotation) as GameObject;
            go.GetComponent<Rigidbody2D>().AddForce(pontoDeBala.transform.right * 3000);

        }
    }

    void Movimento()
    {

        animator.SetFloat("Run", Input.GetAxis("Horizontal"));
        
        if (Input.GetAxisRaw("Horizontal") > 0)
        {

            transform.Translate(Vector2.right * velocidade * Time.deltaTime);
            transform.rotation = Quaternion.Euler(0, 0, 0);
        }
      }

void dano(int danoFortao) {
animator.SetTrigger ("TomandoDano");
vida = vida - danoFortao;
barraVida.SendMessage("AtualizaHP",vida);
Debug.Log ("oi");
if (vida <= 0) {
Destroy (gameObject);
}
}
   
    void OnCollisionStay2D(Collision2D col)
    {
        if (col.collider.tag == "inimigo" && animator.GetCurrentAnimatorStateInfo(0).shortNameHash != Animator.StringToHash("TomandoDano"))
        {
dano (10);
        }
    }

}

Código Responsável pelo Inimigo

using UnityEngine;
using System.Collections;

public class Fortão : MonoBehaviour {
public float velocidade;
public Animator animator;
public int vida = 5;
public int danoFortao = 1;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void FixedUpdate () {
Movimento ();
}

void dano(int danoBatata) {
animator.SetTrigger ("tomadano");
vida = vida - danoBatata;
if (vida <= 0) {
Destroy(gameObject);
}

}


void Movimento()
{

transform.Translate(Vector2.left * velocidade * Time.deltaTime);
}
}

Código responsável pela Barra de vida do jogador

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class BarraVida : MonoBehaviour {
// Update is called once per frame
void Start () {
        Image image = GetComponent<Image>();
        image.fillAmount = 1;
      
      }

    void AtualizaHP(int vida)
    {
        Image image = GetComponent<Image>();
        image.fillAmount =  vida/100f;        
    }
}

internal class function
{
}

Código responsável pelo respawn do inimigo

using UnityEngine;
using System.Collections;

public class Spawnfortao : MonoBehaviour {
private float tempospawn = 2;
private float timer;
public GameObject fortao;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
timer = timer + Time.deltaTime;
{
if (timer >= tempospawn) {
tempospawn = Random.Range (1,4);
timer = 0;
GameObject go = Instantiate(fortao, fortao.transform.position,fortao.transform.rotation) as GameObject;

}
}
}
}

Link para um Exemplo de GDD no qual estes códigos podem ser aplicados.
Este GDD é também um modelo para formulação de GDD's