noocrypte.net
http://noozone.free.fr/noocrypte/

UnityScript-Push any object
http://noozone.free.fr/noocrypte/viewtopic.php?f=47&t=866
Page 1 sur 1

Auteur:  yann.minh [ Jeu Mar 10, 2011 5:50 pm ]
Sujet du message:  UnityScript-Push any object

Push any object

Code:
//ENG: Attach the script to the Enemy GameObject. this script make the enemy follow you, and, hurts your player if is in a certain distance
//ESP: Adjunta el Script a un objeto enemigo. Este script hace que el enemigo persiga al jugador y, si esta a cierta distancia, le hace daño.
private var ismoving=false;    //ENG: is moving the Enemy?
                              //ESP: Se esta moviendo el enemigo?
private var target : GameObject;   //ENG: Enemy´s Target
                                    //ESP: El objetivo del enemigo
var enemyvelocity:int=5;            //ENG: Enemy´s Velocity
                                    //ESP: Velocidad del enemigo
private var attaking:float;         //ENG: attack time rate
                                    //ESP: ratio de ataque del enemigo

function  Start(){
//ENG: set the target and starts to moving at start
//ESP: especifica el objetivo y empieza a moverse
target = GameObject.FindWithTag("Player");
ismoving = true;
}
function Update () {

//ENG: if not moving, wait one second, else, if the enemy have a target, chase that target (player)
//ESP: si no se mueve, espera un segundo, si no, si el enemigo tiene objetivo, ir a por él(jugador)
if(!ismoving)
{
   attaking += Time.deltaTime;
   if(attaking > 1)
   {
      ismoving=true;
      attaking = 0;

   }
}
else
{
if(target)
   ChasePlayer(target);

}

}


function ChasePlayer(target:GameObject)
{   
//ENG: look at target
//ESP: mirar al objetivo
      var direction =  target.transform.position - transform.position;
      direction.y=0;
      var rotation = direction;
//ENG: rotate smoothly to the target´s direction
//ESP: rotar suavemente hacia la dirección del jugador
      transform.rotation = Quaternion.Slerp (transform.rotation, Quaternion.LookRotation(direction), 3 * Time.deltaTime);
      transform.eulerAngles = Vector3(0, transform.eulerAngles.y, 0);
//ENG: stablish the orientation
//ESP: establecer la orientación
      var forward = transform.TransformDirection(Vector3.forward);
//ENG: Stablish the velocity variance depend on the target´s direction
//ESP: establecer la varianza de la velocidad dependiendo de la dirección del objetivo
      var speedModifier = Vector3.Dot(forward, direction.normalized);
      speedModifier = Mathf.Clamp01(speedModifier);
//ENG: if target reaches a certain distance between him and the player, hurts the player and stop moving, else, it continues moving
//ESP: si el objetivo alcanza cierta distancia entre el y el jugador, hiere al jugador y para de moverse. de lo contrario, continua moviendose
      if (Vector3.Distance(transform.position, target.transform.position) < 1.5)
      {
         ismoving=false;
         target.SendMessageUpwards("ApplyDamage",5,SendMessageOptions.DontRequireReceiver);
      }
      else
      {
         direction = forward * enemyvelocity * speedModifier;
         if(GetComponent (CharacterController))
            GetComponent (CharacterController).SimpleMove(direction);
         else
         {
            rigidbody.velocity=direction;
            rigidbody.velocity.y=-1;
         }
      }
   
   yield;
}

Page 1 sur 1 Heures au format UTC [ Heure d’été ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/