martes, 9 de agosto de 2011

Script para empujar objetos rígidos

var potencia : float; // variable para definir la potencia de empuje.

function OnControllerColliderHit (hit : ControllerColliderHit) //función que se ejecuta al contacto con un objeto rígido."hit" será el objeto con que choque
{

var cuerpo: Rigidbody = hit.collider.attachedRigidbody;
// a la variable cuerpo le asigno el Rigidbody del objeto con el que he chocado


var direccion: Vector3 = Vector3 (hit.moveDirection.x, 0, hit.moveDirection.z);
// Creo la variable direccion que será el vector director con el que apliquemos la fuerza.
// Le asignamos las coordenadas de la direccion en la que estabamos en el momento de //chocar.

if(Input.GetKey("e")) //si pulsamos la tecla 'e' ...
{
cuerpo.velocity = direccion* potencia/cuerpo.mass;//aplicamos una velocidad a "cuerpo".
}

}

// una velocity es un vector con 3 dimensiones, por tanto usaremos nuestro vector direccion y lo multiplicaremos por una constante que es la potencia. Con esto tendremos un vector con sus coordenadas multiplicadas cada una por la potencia.

Si dividimos este vector entre la masa del objeto, tendremos una fuerza más realista ya que cuanto más pesado, más costará moverlo.

Este trozo de código en JavaScript lo escribimos en un archivo .js y lo metemos en la carpeta Assets de nuestro proyecto.

Después arrastramos el archivo .js a nuestro Player o carácter principal del juego.

Si ponemos un cubo y le asignamos un Component Rigidbody, ya podremos empujarlo.

Nota: Supongo que tenemos un terreno o plataforma por la que andar, y un carácter principal creado que podamos mover.

Al arrastrarle el archivo .js, selecionamos el protagonista, y en la ventana "inspector", podremos ver que lo tiene asignado. Allí se mostrará la variable potencia con un número editable que tendremos que definir antes de jugar.


5 comentarios:

  1. Hola Afisicosis.
    Ante todo darte las gracias por aportar tus conocimientos sobre Unity.
    Soy un principiante y estoy aprendiendo, cogiendo y mezclando script ya que mi idea de programación es muy muy baja.
    Estoy haciendo una aplicación educativa con Unity y me haría falta un script para salvar y recuperar la partida. Si puedes darme alguna información sobre esto te lo agradecería.
    Gracias de nuevo.

    ResponderEliminar
  2. Buenos días y muchas grácias por visitar mi blog.

    La verdad es que hace mucho que no escribo nada pero sigo usando unity muy a menudo.

    No he tocado nada de salvar partidas nunca, pero creo que sabría por dónde tirar. En cuanto pueda escribo algo sobre esto. Un saludo

    ResponderEliminar
    Respuestas
    1. ola amigo muchas gracias por algunos scrips esta buy bueno tu blog podiras aser uno que pueda mover los objetos con el mouse porfas te lo pido es que intento aser un juego como el amnesia

      Eliminar
  3. Muchas gracias por tus aportaciones, son de gran ayuda para quien está empezando, como es mi caso y anda un poco perdido. Muy buen trabajo!!!

    ResponderEliminar
  4. Gracias por el script me funciona muy bien

    ResponderEliminar

Deja tus comentarios o dudas.