How do I make a camera follow an object in unity3d C#?

c#, camera, object, unity-game-engine

Solution

here you go . a full code.

Simple Following

using UnityEngine;
using System.Collections;

public class Follow: MonoBehaviour {
public Transform target;
public float smooth= 5.0f;
void  Update (){
    transform.position = Vector3.Lerp (
        transform.position, target.position,
        Time.deltaTime * smooth);
} 

    } 

Advanced Following

using UnityEngine;
using System.Collections;

public class SmoothFollowScript: MonoBehaviour {

// The target we are following
public  Transform target;
// The distance in the x-z plane to the target
public int distance = 10.0;
// the height we want the camera to be above the target
public int height = 10.0;
// How much we 
public heightDamping = 2.0;
public rotationDamping = 0.6;


void  LateUpdate (){
    // Early out if we don't have a target
    if (TargetScript.russ == true){
    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);
}
}
}

Problem

I have an object called Ball, and I added keyboard interactivity to it(WASD to move the ball) I need the camera to stay behind and follow the ball, but I am getting errors. ``` using UnityEngine; using System.Collections; public class ballmain : MonoBehaviour { public bool isMoving = false; public string direction; public float camX; public float camY; public float camZ; // Use this for initialization void Start () { Debug.Log("Can this run!!!"); } // Update is called once per frame void Update () { camX = rigidbody.transform.position.x -=10; camY = rigidbody.transform.position.y -=10; camZ = rigidbody.transform.position.z; camera.transform.position = new Vector3(camX, camY, camZ); //followed by code that makes ball move } } ``` I get error "Assets/ballmain.cs(18,44): error CS1612: Cannot modify a value type return value of 'UnityEngine.Transform.position'. Consider storing the value in a temporary variable" Does anyone know the answer? If I comment out the code about the camera the ball can move around.

Original source