
Esta eh uma versao mais arrumada destas minhas investigacoes do Unity3D.
Alguns comentarios sobre o codigo abaixo que eh novinho em folha.
static var dead:int = 0;
function Awake () {
dead = 0;
}
function OnCollisionEnter(collision : Collision) {
if( collision.collider.name == "bottom" || collision.collider.tag == "enemy"){
dead = 1;
var message = GameObject.Find("end of level");
var message2 = GameObject.Find("end of level2");
message.guiText.text = "You failed.";
message2.guiText.text = "Click to restart";
audio.Play();
}
}
function Update () {
if( dead == 1 ){
if (Input.GetButtonDown("Fire1")) {
Application.LoadLevel (Application.loadedLevel);
}
}
}
Este codigo esta associado ao personagem que esta em movimento, ou seja se o danado colidir com o plano chamado “bottom” que esta abaixo das plataformas, ou com algum dos inimigos a variavel dead eh setada para 1, algumas mensagens sao exibidas e o som correspondente toca.
Quando estiver neste estado de “morto” (dead==1) o update deste mesmo script vai verificar se o click foi pressionado para ai entao recarregar a cena atual, detalhe que a funcao Awake garante que nao reiniciamos a cena com o personagem morto
porque a variavel eh static e portanto o reload da cena nao apaga seu valor.
usei esta variavel em outros pontos do de outros scripts, como por exemplo para impedir que o tiro fosse disparado ou o personagem movimentado se estivesse no estado de morto, veja como foi usado
var speed:int = 10.0;
function FireRocket () {
// dont fire if the char is dead
if (restart_if_char_die.dead == 1) return;
if( count_enemies.end_level == 1) return;
var bullet = GameObject.CreatePrimitive(PrimitiveType.Sphere);
bullet.tag = "bullet";
bullet.AddComponent(Rigidbody);
bullet.transform.position = transform.position;
bullet.transform.rotation= transform.rotation;
bullet.transform.localScale= transform.localScale;
bullet.rigidbody.velocity = transform.forward * speed * -1;
bullet.rigidbody.mass = 5;
audio.Play();
}
function Update () {
if (Input.GetButtonDown("Fire1")) {
FireRocket();
}
}
bom eh isto ae divirta-se jogando as caixinhas do alto, pena que elas nao gritam
