Mostrando postagens com marcador tutorial iniciante unity 3d. Mostrar todas as postagens
Mostrando postagens com marcador tutorial iniciante unity 3d. Mostrar todas as postagens

quarta-feira, 7 de setembro de 2011

Fundamentos da programação javascript na unity parte 2

No script anterior nós entendemos como funcionam as variáveis na unity,mas e a parte que tem function Update?
Bem,essa parte é uma função,funções são partes do código que realizam alguma tarefa.Existem vários tipos de função na unity  veja as principais e o que elas fazem:
Update-O código que está dentro dela é executado a cada frame
Start-O código que está dentro dela é executado quando a cena começa
OnCollisionEnter-O código que está dentro dela é executado quando o objeto que possui o script colide com alguma coisa.
Você pode criar suas próprias funções,por exemplo abra o script da aula anterior e digite isso:

var b=10;
var c=2;
function Update () {
Debug.Log(soma);
}
function soma()
{
return b+c;
}
Agora a barra cinza está indicando 12,que é 10+2(b+c).Como você pode ver o comando return serve para retornar algum valor passado pela função.
É isso aí acho que já é suficiente para começar,agora você pode ver os meu videos no youtube e começar a entender as coisa lá.
Até a próxima!

Movimento avançado de personagens com Character Controller

Se você assistiu os videos anteriores,já percebeu que o script de movimento do personagem usado neles não funciona muito bem.Mas por que?
A resposta é simples,o script apenas muda a posição do objeto enquanto quem cuida das "interações físicas" é o rigidbody e as simulações feitas por esse componente não são muito boas para personagens,então nós devemos usar outro tipo de componente voltado para personagens na unity esse componente se chama Character Controller.
Abra a unity coloque um cubo,um plano e uma luz na cena posicione pra ficar mais ou menos assim:
Ok,agora vamos ao script,crie um novo javascript chame-o de move ou andar ou algo do tipo(é bom colocar nomes que expliquem bem o que o script faz porque quando seu projeto ficar grande você pode se perder nos códigos).Dê dois cliques no script e dentro do editor de códigos cole isso aqui:
var speed : float = 6.0;

var jumpSpeed : float = 8.0;

var gravity : float = 20.0;

var rotspeed:float=3.0;

private var moveDirection : Vector3 = Vector3.zero;



function Update() {

var hor=Input.GetAxis("Horizontal");

var vert=Input.GetAxis("Vertical");

    var controller : CharacterController = GetComponent(CharacterController);

    if (controller.isGrounded) {

       

        moveDirection = Vector3(0, 0,vert);

        moveDirection = transform.TransformDirection(moveDirection);

        moveDirection *= speed;

        transform.Rotate(0,hor*rotspeed,0);

        if (Input.GetButton ("Jump")) {

            moveDirection.y = jumpSpeed;

        }

    }



    

    moveDirection.y -= gravity * Time.deltaTime;

    

    

    controller.Move(moveDirection * Time.deltaTime);

}

@script RequireComponent(CharacterController)
Arraste o script para o cubo,bote o jogo pra tocar e brinque um pouco,como você pode ver esse script esta pronto para ser usado em qualquer tipo de jogo de plataforma 3d(Mario 64) a TPS(Gears of War).Agora vamos a explicação desse código:
var jumpSpeed : float = 8.0;

var gravity : float = 20.0;

var rotspeed:float=3.0;
Essas variáveis indicam a velocidade do pulo(jumpSpeed) a gravidade(gravity) e a velocidade de rotação(rotspeed).
private var moveDirection : Vector3 = Vector3.zero;
Essa variável indica a direção do movimento do player.
var hor=Input.GetAxis("Horizontal");

var vert=Input.GetAxis("Vertical");

var controller : CharacterController = GetComponent(CharacterController);
Aqui temos uma variável para representar o eixo horizontal do teclado , outra para representar o eixo vertical e mais uma para representar o componente Character Controller.
if (controller.isGrounded) {
 moveDirection = Vector3(0, 0,vert);

        moveDirection = transform.TransformDirection(moveDirection);

        moveDirection *= speed;

        transform.Rotate(0,hor*rotspeed,0);

        if (Input.GetButton ("Jump")) {

            moveDirection.y = jumpSpeed;

        }

    }
Esse if (controller.isGrounded) quer dizer se o personagem estiver no chão,colocamos a direção dele para ser guiada no eixo z pelo vertical do teclado.O moveDirection *= speed multiplica o moveDirection para ter velocidade. transform.Rotate(0,hor*rotspeed,0) faz a rotação de player multiplicando pela velocidade de rotação.O if (Input.GetButton ("Jump")) serve para mudar o eixo y para a velocidade de pulo(jumpSpeed).moveDirection.y -= gravity * Time.deltaTime Faz a gravidade cuidar da altura do player(caso ele não esteja no chão).@script RequireComponent(CharacterController) Coloca um Character Controller no objeto.
Referencias
Character Controller
Time.deltaTime

Bom jogo e até a próxima!
Aqui você pode ver a cena que eu fiz com esse script

sábado, 3 de setembro de 2011

Série de tutoriais Unity 3d

Eu fiz essa série de tutoriais de unity 3d a algum tempo,mas são bem legais pra quem está começando:

É isso espero que essas aulas ajudem,vou fazer outros tutoriais sobre assuntos mais avançados,mesclando videos com texto(os que envolverem mais programação eu vou fazer em texto mesmo).
Até a próxima:D