Chobi77
1
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.
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;