- Home /
rotate and follow x position the character walking
common camera is follow the object. what i want to do is, when character walk, the camera just rotate. but the camera has limit 20degree. after reach the limit camera start follow x position the character walking. then if character turn back, the camera start rotate again. and follow the x position.
sory for my bad english, hope someone understand what i want to do.
here is my code
var target : Transform; var distance = 5.0; var damping = 6.0; var xSpeed = 250.0; var ySpeed = 120.0;
var xMinLimit = -20; var xMaxLimit = 80; var yMinLimit = -20; var yMaxLimit = 80; var zMinLimit = -20; var zMaxLimit = 80;
var zoomRate = 20;
private var x = 0.0; private var y = 0.0; private var originalRotation: Vector3; var xConstraint = 20; var yConstraint = 20; var diffX : float; var currentPosition : Vector3; function Start () { var angles = transform.eulerAngles; x = angles.y; y = angles.x; originalRotation = transform.rotation.eulerAngles; currentPosition = transform.position; // Make the rigid body not change rotation if (rigidbody) rigidbody.freezeRotation = true; }
function LateUpdate () {
if (target) {
//get different angle when object translate
var diff = originalRotation.y - transform.rotation.eulerAngles.y;
currentPosition = transform.position;
//limit the angle
if ((diff >= -20) && (diff <= 20)) {
//if not limit rotate camera
var rotation = Quaternion.LookRotation(target.position - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * damping);
diffX = transform.position.x - target.position.x;
Debug.Log("rotate");
}
//if over than limit translate the posision
else {
var position = Vector3(diffX + target.position.x, transform.position.y, transform.position.z);
var pos = (position.x - currentPosition.x) * 100;
//get object turn left or right
if ((pos <= -1) && (position.x < currentPosition.x)) {
//rotate again
transform.rotation.eulerAngles.y += 1;
}
else if ((pos >= 1) && (position.x > currentPosition.x)) {
transform.rotation.eulerAngles.y -= 1;
}
transform.position = position;
}
Debug.Log("pos");
}
}
Your answer
Follow this Question
Related Questions
Camera rotation around player while following. 6 Answers
Character Runs Off Camera 2 Answers
rotate around character 1 Answer
How to make an enemy teleport? 3 Answers
Character - Move In Mouse Direction 1 Answer