lunes, 13 de mayo de 2013

Como crear rebotes en una pelota con Unity GameEngine



Saludos amigos.

En esta ocasión os traigo un ejemplo de como crear rebotes en una pelota con Unity para vuestros videojuegos.

Utilizo la velocidad como referencia para aplicar una fuerza de rebote y la multiplico por un valor adicional para simular distintas propiedades en la pelota.
El script posee también la opción de limitar el número máximo de rebotes. Usando la función "OnColliderEnter", detectamos la colisión con los objetos y con la función "OnColliderStay" aplicamos una fuerza a los objetos que posean un Rigidbody, tomando también como referencia la velocidad.
Como en el resto de scripts, pretende ser una referencia para que experimenteis y veáis las distintas maneras de crear lo necesario para vuestros juegos en este fantástico motor de videojuegos que es Unity.



Enjoy!!!




#pragma strict

private var fuerzaRebote : float;
var fuerzaMultiplicador : float = 25;
var UsarLimiteContactos : boolean = false;
var numContactosMax : int = 3;
private var contactos : int;
private var contacto : boolean = false;
private var direccion : Vector3;
private var velocidad : Vector3;

function Start () {
 
 contactos = 0;
 
}

function FixedUpdate () {
 
 velocidad = rigidbody.velocity;
 fuerzaRebote =  (fuerzaMultiplicador * velocidad.magnitude);
 
}

function OnCollisionEnter(collisionInfo : Collision) {
    
    for (var contact : ContactPoint in collisionInfo.contacts) {
  Debug.DrawRay(contact.point, contact.normal * 10, Color.green,1);
  direccion = contact.normal;
  if(UsarLimiteContactos){
   if(numContactosMax > contactos){
    rigidbody.AddForce (direccion * fuerzaRebote);
    contactos ++;
   }
  }else{
   rigidbody.AddForce (direccion * fuerzaRebote);
  }
 }
}

function OnCollisionStay(collisionInfo : Collision) {
 
 for (var contact : ContactPoint in collisionInfo.contacts) {
  Debug.DrawRay(contact.point, contact.normal * 10, Color.white);
  if (collisionInfo.rigidbody) {
   collisionInfo.rigidbody.AddForce (-contact.normal * fuerzaRebote);
  }
 }

}

1 comentario:

  1. una consulta como hago para darle una patada a un balon en primera persona?

    ResponderEliminar