title: Camera Smooth Follow 2D from UnityScript to C# using Unity3D
body: <p>I am making a script to be used on the Main Camera object of Unity3D so the camera follows the character in a 2D platformer world.</p>
  
  <p>I tried to translate this from a UnityScript script to c#, I am getting an error in line 26: "Cannot modify a value type return value of 'UnityEngine.Transform.position'. Consider storing the value in a temporary variable."</p>
  
  <p><strong>Original UnityScript Version</strong></p>
  
  <pre><code>var cameraTarget : GameObject;
  var player : GameObject;
  
  var smoothTime : float = 0,1;
  var cameraFollowX : boolean = true;
  var cameraFollowY : boolean = true;
  var cameraFollowHeight : boolean = false;
  var cameraHeight : float = 2.5;
  var velocity : Vector2;
  private var thisTransform : Transform;
  
  function Start ()
  {
    thisTransform = transform;
  }
  
  function Update () 
  {
  
  if (cameraFollowX)
  {
    thisTransform.position.x = Mathf.SmoothDamp (thisTransform.position.x, cameraTarget.transform.position.x, velocity.x, smoothTime);
  }
  
  if (cameraFollowY)
  {
    thisTransform.position.y = Mathf.SmoothDamp (thisTransform.position.y, cameraTarget.transform.position.y, velocity.y, smoothTime);
  }
  
  if (!cameraFollowX &amp; cameraFollowHeight)
  {
    camera.transform.position.y = cameraHeight;
  }
  
  }
  </code></pre>
  
  <p><strong>My C# Version</strong></p>
  
  <pre><code>using UnityEngine;
  using System.Collections;
  
  public class CameraSmoothFollow : MonoBehaviour {
  
      public GameObject cameraTarget; // object to look at or follow
      public GameObject player; // player object for moving
  
      public float smoothTime = 0.1f; // time for dampen
      public bool cameraFollowX = true; // camera follows on horizontal
      public bool cameraFollowY = true; // camera follows on vertical
      public bool cameraFollowHeight = true; // camera follow CameraTarget object height
      public float cameraHeight = 2.5f; // height of camera adjustable
      public Vector2 velocity; // speed of camera movement
  
      private Transform thisTransform; // camera Transform
  
      // Use this for initialization
      void Start () {
          thisTransform = transform;
      }
  
      // Update is called once per frame
      void Update () {
          if (cameraFollowX){
              thisTransform.position.x = Mathf.SmoothDamp (thisTransform.position.x, cameraTarget.transform.position.x, ref velocity.x, smoothTime); // Here i get the error
          }
          if (cameraFollowY) {
          // to do    
          }
          if (!cameraFollowX &amp; cameraFollowHeight) {
          // to do
          }
      }
  }
  </code></pre>
  
  <p>Any help will be appreciated.</p>