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