Hello,
I am using the standard MouseOrbit script in my game. When the player fails the level, the player respawns in the starting position, but the camera does not go back to the original position/rotation.
I have tried to archive it by doing the following:
var target : Transform;
var distance = 10.0;
var xSpeed = 250.0;
var ySpeed = 120.0;
var yMinLimit = -20;
var yMaxLimit = 80;
private var x = 0.0;
private var y = 0.0;
private var startPos : Vector3;
private var startRot;
private var canMove : boolean = true;
@script AddComponentMenu("Camera-Control/Mouse Orbit")
function Start ()
{
var angles = transform.eulerAngles;
x = angles.y;
y = angles.x;
// Make the rigid body not change rotation
if (rigidbody)
rigidbody.freezeRotation = true;
startPos = this.transform.position;
startRot = this.transform.rotation;
}
function LateUpdate ()
{
if (canMove)
{
if (target)
{
x += Input.GetAxis("Mouse X") * xSpeed * 0.02;
y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02;
y = ClampAngle(y, yMinLimit, yMaxLimit);
var rotation = Quaternion.Euler(y, x, 0);
var position = rotation * Vector3(0.0, 0.0, -distance) + target.position;
transform.rotation = rotation;
transform.position = position;
}
}
}
static function ClampAngle (angle : float, min : float, max : float)
{
if (angle < -360)
angle += 360;
if (angle > 360)
angle -= 360;
return Mathf.Clamp (angle, min, max);
}
function Restart()
{
canMove = false;
this.transform.position = startPos;
transform.rotation = startRot;
canMove = true;
}
However, it doesn’t working. I call the Restart function from a different script, and it is calling it succesfully.
Any ideas?