- Home /
Help with this error: Operator '*' cannot be used with a left hand side of type 'Object' and a right hand side of type 'UnityEngine.Vector3'.
Getting this error on the scripting for my camera that follows my plane around. Error is "Operator '*' cannot be used with a left hand side of type 'Object' and a right hand side of type 'UnityEngine.Vector3'." This has been working fine for months but today it's decided not to work.
Any help?
Script:
var target : Transform;
// The distance in the x-z plane to the target
var distance = 10.0;
// the height we want the camera to be above the target
var height = 5.0;
// How much we
var heightDamping = 2.0;
var rotationDamping = 3.0;
var currentHeight;
var wantedHeight;
var currentRotationAngle;
var wantedRotationAngle;
var currentRotation;
// Place the script in the Camera-Control group in the component menu
@script AddComponentMenu("Camera-Control/Smooth Follow");
function LateUpdate () {
// Early out if we don't have a target
if (!target)
return;
// Calculate the current rotation angles
wantedRotationAngle = target.eulerAngles.y;
wantedHeight = target.position.y + height;
currentRotationAngle = transform.eulerAngles.y;
currentHeight = transform.position.y;
// Damp the rotation around the y-axis
currentRotationAngle = Mathf.LerpAngle (currentRotationAngle, wantedRotationAngle, rotationDamping * Time.deltaTime);
// Damp the height
currentHeight = Mathf.Lerp (currentHeight, wantedHeight, heightDamping * Time.deltaTime);
// Convert the angle into a rotation
currentRotation = Quaternion.Euler (0, currentRotationAngle, 0);
// Set the position of the camera on the x-z plane to:
// distance meters behind the target
transform.position = target.position;
transform.position -= currentRotation * Vector3.forward * distance;
// Set the height of the camera
transform.position.y = currentHeight;
// Always look at the target
transform.LookAt (target);
}
Try defining the type of your variables ins$$anonymous$$d of using dynamic typing.
And how do I do that? I'm very new to coding and this isn't my script.
It looks like your variable types are the following:
var distance:float = 10.0;
var height:float = 5.0;
var heightDamping:float = 2.0;
var rotationDamping:float = 3.0;
var currentHeight:float;
var wantedHeight:float;
var currentRotationAngle:float;
var wantedRotationAngle:float;
var currentRotation:Vector3;
Ok changed then and getting new errors:
BCE0022: Cannot convert 'UnityEngine.Quaternion' to 'UnityEngine.Vector3'.
and
BCE0051: Operator '*' cannot be used with a left hand side of type 'UnityEngine.Vector3' and a right hand side of type 'UnityEngine.Vector3'.
Oh, whoops. currentRotation is a Quaternion. var currentRotation:Quaternion;
Answer by OrbitSoft · Dec 30, 2013 at 03:36 PM
Maybe because you declared some variables but you didn't declare them as floats or ints so its giving you this error, they need to be numbers and not just variables:
var currentHeight : float;
Try this for the last ones where you didn't declare their type