- Home /
Limiting rotatioal speed for targeting
Hello,
I'm trying to get an enemy to have a limited rotational speed so that the accuracy of the enemy isn't always perfect. as of right now I'm using the following code to target the player.
transform.LookAt(target);
The Problem with this is the enemy is always looking at the player so the only way to make it miss is by moving faster than the projectile. I'm new to coding so I'm not even really sure where to begin. Bellow is all the code, don't be surprised if their are mistakes.
var target : Transform; // The player
var safeDistance = 3000; //How close the player can get
var Pulse : Rigidbody;
public var Clone;
private var ReadyToFire : boolean = true;
function Update()
{
//look at the target
transform.LookAt(target);
//check how close the player is
var distanceToPlayer = Vector3.Distance(this.transform.position, target.transform.position);
// this checks to see if the player is too close then runs the fire function
if(distanceToPlayer <= safeDistance)
{
PAUSE();
}
}
function PAUSE()
{
if(ReadyToFire)
{
ReadyToFire = false;
Fire();
resetReadyToFire();
}
}
function resetReadyToFire()
{
yield WaitForSeconds(1);
ReadyToFire = true;
}
//fire function
function Fire()
{
//projectile code
var Clone : Rigidbody = Instantiate(Pulse, transform.position, transform.rotation);
}
Answer by Peter G · Jan 24, 2012 at 11:48 PM
Here's an easy rotation mechanism for rotating around based on a maxspeed:
var maxAngularSpeedDegrees : float;
function RotateTowardsTarget(target : Transform) {
targetRot = Quaternion.LookRotation( target.position - transform.position);
transform.rotation = Quaternion.RotateTowards(transform.rotation, targetRot , maxAngularSpeedDegrees * Time.deltaTime);
}
Your answer
Follow this Question
Related Questions
Speed limit? 2 Answers
Limited Energy Regeneration 3 Answers
Rotating hinge joint over 180° with angular limit 1 Answer
how to limit rotation 2 Answers
Rotation used as movement 4 Answers