Show de biblioteca de explosoes para unity3D !!

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
Alem das coisas em 3D que giram explodem e coisa e tal precisamos de textos 2D pendurados em alguns lugares da tela, para isto adicionamos um GUIText, e o legal do GUIText eh o seu posicionamento na tela, que eh bem simples usando somente as coordenadas X e Y (2D pelamordeDEus) no intervalo de 0 a 1.
canto superior esquerdo : X=0 e Y=1
canto superior direito : X=0.9 e Y=1
canto inferior esquerdo : X=0 e Y=0.1
canto inferior direito : X=0.9 e Y=0.1
bons texto pra vc
Mais coisas interessantes no Unity3D, algumas teclas de atalho interessantes : a sequencia QWER muda a forma de manipulacao dos objetos, e de acordo com a forma que estiver selecionada, quando vc clica no fundo muda a forma como arrastar o mouse sobre a tela vai mudar a sua visualização da scene enquanto estiver trabalhando. isto me deu uma dor de cabeça de primeira heheheh como me achar com os oibjetos 3D
outra coisa nova descoberta, como debugar ! basta usar o objeto Debug
facil facil.
Fiz um script para um elevador, funcionou como esperado veja soh como ficou o codigo :
// smaller value
var start:float;
//greater value
var end:float;
var speed: int = 15;
var direction: int = 1;
var sleep:float = 4000;
var elapsed:float = 0;
function Update () {
var y = speed * Time.deltaTime * direction;
// check if the limit is reach and inverse the direction
if( elapsed <= 0 ){
if( direction == 1 ){
if( transform.position.y + y > end ){
transform.position.y = end;
elapsed = sleep;
direction = -1;
}else {
transform.Translate(0 , y, 0 );
}
} else {
if( transform.position.y + y < start ){
transform.position.y = start;
elapsed = sleep;
direction = 1;
}else {
transform.Translate(0 , y, 0 );
}
}
} else {
elapsed = elapsed - Time.deltaTime;
}
Debug.Log(elapsed);
}
Este codigo eh arrastado sobre um gameObject que no caso eh um plano, e determino o Y inicial do objeto e o Y final, o tempo que o elevador fica parado em sleep, e a velocidade que vai se deslocar. fica assim na interface :

Outro aprendizado importante foi como criar materiais, usa Asset / Create / Material e pronto ! dai vc configura os detalhes do material e aplica o material sobre o objeto desejado.
o controle do personagem ainda esta engraçado heheheh tipo quando cai e vira de cabeça para baixo inverte tudo
ainda estou pensando no que fazer, estou com as seguintes opções em mente :
- Nao deixar o personagem virar
- Controlar se ele virou e inverter a transformacao para refletir que esta virado
- Mudar a forma de controlar para ficar parecido com um carro, usando as setas para controlar o volante, e acelerando com seta para cima

Esta eh a primeira aventura com o Unity3D, graças a um esperto tutorial do Erick consegui dar os primeiros passos no Unity3D !! o resultado pode ser encontrado aqui : move-box1
Quero registrar alguns passos importantes que aprendi :
1. O chao vira chao quando vc chama ele de chao
hehehehe neste exemplo adicionei um cubo usando a opcao : ‘Game Object / Create Other / Cube’, fiz ele ficar mais larguinho para dar mais estabilidade ao movimento e adicionei o component de corpo rigido atraves de : ‘Component / Physics / Rigid Body’ pronto isto bastaria para todos serem felizes e o cubo nao passar do chao quando dah o play.
2. nao entendi ainda como usar um Shader para cada elemento heheheh quando mudo a cor do plano muda a cor da rampinha que fiz
3. adicionei um codigo javascript e arrastei sobre o cubo, pronto !! o metodo update implementado fica valendo para o objeto, e uma variavel que declarei no codigo : var speed:int ficou on inspector do objeto, simplim simplim
olha o codigo usado para o controle de teclado:
var speed: int;
function Update () {
var x = Input.GetAxis("Horizontal") * speed * Time.deltaTime;
var y = 0;
var z = Input.GetAxis("Vertical") * speed * Time.deltaTime;
transform.Translate(x , y, z );
}
4. e este links salvaram o dia
documentacao sobre o gameplay
documentacao sobre a fisica
documentacao sobre o input
post sobre movimentacao com teclas
por enquanto eh soh, depois tem mais

