Camera issue (storing temp variable C# problem)

Hi all,

I am converting some script from Unity Script to C# and am have a bit of a problem.

The line of code that is causing the problem is this.

camera.transform.position.x = Mathf.SmoothDamp(camera.transform.position.x, camera.transform.position.x + borderX, ref velocity.y, smoothTime);

And the error i am getting is this.

error CS1612: Cannot modify a value type return value of `UnityEngine.Transform.position’. Consider storing the value in a temporary variable

I have been looking around at similar posts with the same problem, but i am not understanding what the error means or how to fix this problem. :frowning:

can anyone help me through this.

Thanks.

I believe that error is referring to the fact that you can not modify the x and y from position directly (you can only read them, not write).

Try this:

camera.transform.position = new Vector3(x,y,z);

C# doesn’t allow you to set the individual x,y,z components of the position Vector3. Instead, you’ll need to create a new one like so:

camera.transform.position = new Vector3(Mathf.SmoothDamp(camera.transform.position.x, camera.transform.position.x + borderX, ref velocity.y, smoothTime), camera.transform.position.y, camera.transform.position.z);

Vector3 tempPosition = camera.transform.position;
tempPosition.x = Mathf.SmoothDamp(camera.transform.position.x, camera.transform.position.x + borderX, ref velocity.y, smoothTime);
camera.transform.position = tempPosition;