mercredi 4 mars 2015

Random movement attempt

I'm trying to make my bear walk randomly when the player is not in it's range. I wanted it to randomly select the its rotation in y axis and then move it forward and after some time switch the rotation randomly again.


The thing is that I don't really know how could I assing him a random rotation. Could anyone help me with it please? Every bit of help would be much appreciated.



var distance : float;
var playerm : GameObject;
private var playerGUI : PlayerGUI;
var target : Transform;

var aggroRange : float = 30;
var moveSpeed : float = 4.0;
var health : int = 120;
var attackRange : float = 3.0;
var damage : float = 0.1;
var cooldown : float = 10.0;
var roll : int;
var delay : float = 2;

private var timeToChangeDirection : float;
private var angle : float;

var damping : float = 6.0;
var gravity : float = 100.0;
private var moveDirection : Vector3 = Vector3.zero;

var controller : CharacterController;

function Start()
{
playerm = GameObject.Find("Player_Model");
target = playerm.transform;
playerGUI = GameObject.Find("First Person Controller").GetComponent(PlayerGUI);
}

function Update()
{
if(health <= 0)
{
delay -= 0.1;
animation.Play("Dead");
if(delay <= 0)
{
Destroy(this.gameObject);
}
}

distance = Vector3.Distance(target.position, transform.position);

if(distance > aggroRange)
{
//Stop();
timeToChangeDirection -= Time.deltaTime;

if (timeToChangeDirection <= 0)
{
ChangeDirection();
}

controller.Move(transform.forward * Time.deltaTime);
}

if(distance < aggroRange && (distance > attackRange) && (cooldown <= 0))
{
LookAt();
Chase();
}

if(distance <= attackRange)
{
if(cooldown <= 0)
{
Attack();
}
}

if(cooldown >= 0)
{
cooldown -= 0.1;
}
}

function LookAt()
{
var rotation = Quaternion.LookRotation(target.position - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * damping);
}

function Chase()
{
animation.Play("Run");
moveDirection = transform.forward;
moveDirection *= moveSpeed;

moveDirection.y -= gravity * Time.deltaTime;
controller.Move(moveDirection * Time.deltaTime);
}

function Stop()
{
animation.Play("Idle");
animation["Idle"].speed = 0.5;
}

function Attack()
{
roll = Random.Range(0, 2);
if(roll == 1)
{
animation.Play("Maul");
playerGUI.healthBarDisplay -= 0.2;
}
else
{
animation.Play("Bite");
playerGUI.healthBarDisplay -= 0.1;
}
cooldown = 10.0;
}

function Movement()
{

}

function ChangeDirection()
{
//angle = Quaternion.Slerp(transform.position);
//transform.rotation = Quaternion.Slerp(transform.rotation, angle, Time.deltaTime * damping);
}


Thanks in advance.





Aucun commentaire:

Enregistrer un commentaire