How to Assign new camera target after first is destroyed?

Basically I’m using a camera script from another thread which the thread is in the comments for those who want to know the original author. (I suck at camera’s) So I’va got a full level and once the player collides with a door after certain criteria is met a new level is loaded.

//modified from http://forum.unity3d.com/threads/16949-WOW-Camera-Movement/page5
var target : Transform;
var targetHeight = 2.0;
var distance = 2.8;
var maxDistance = 10;
var minDistance = 0.5;
var xSpeed = 250.0;
var ySpeed = 120.0;
var yMinLimit = -40;
var yMaxLimit = 80;
var zoomRate = 20;
var rotationDampening = 3.0;
private var x = 0.0;
private var y = 0.0;
var isTalking:boolean = false;

@script AddComponentMenu(“Camera-Control/WoW Camera”)

function Start () {
var angles = transform.eulerAngles;
x = angles.y;
y = angles.x;

// Make the rigid body not change rotation
if (rigidbody)
rigidbody.freezeRotation = true;
}

function LateUpdate () {
if(!target) {
// target = GameObject.Find(“malePlayerwSkele 1”);
return;
}

// If either mouse buttons are down, let them govern camera position
if (Input.GetMouseButton(0) || (Input.GetMouseButton(1))){
x += Input.GetAxis(“Mouse X”) * xSpeed * 0.02;
y -= Input.GetAxis(“Mouse Y”) * ySpeed * 0.02;

// otherwise, ease behind the target if any of the directional keys are pressed
} else if(Input.GetAxis(“Vertical”) || Input.GetAxis(“Horizontal”)) {
var targetRotationAngle = target.eulerAngles.y;
var currentRotationAngle = transform.eulerAngles.y;
x = Mathf.LerpAngle(currentRotationAngle, targetRotationAngle, rotationDampening * Time.deltaTime);
}

distance -= (Input.GetAxis(“Mouse ScrollWheel”) * Time.deltaTime) * zoomRate * Mathf.Abs(distance);
distance = Mathf.Clamp(distance, minDistance, maxDistance);

y = ClampAngle(y, yMinLimit, yMaxLimit);

// ROTATE CAMERA:
var rotation:Quaternion = Quaternion.Euler(y, x, 0);
transform.rotation = rotation;

// POSITION CAMERA:
var position = target.position - (rotation * Vector3.forward * distance + Vector3(0,-targetHeight,0));
transform.position = position;

// IS VIEW BLOCKED?
var hit : RaycastHit;
var trueTargetPosition : Vector3 = target.transform.position - Vector3(0,-targetHeight,0);
// Cast the line to check:
if (Physics.Linecast (trueTargetPosition, transform.position, hit)) {
// If so, shorten distance so camera is in front of object:
var tempDistance = Vector3.Distance (trueTargetPosition, hit.point) - 0.28;
// Finally, rePOSITION the CAMERA:
position = target.position - (rotation * Vector3.forward * tempDistance + Vector3(0,-targetHeight,0));
transform.position = position;
}
}

static function ClampAngle (angle : float, min : float, max : float) {
if (angle < -360)
angle += 360;
if (angle > 360)
angle -= 360;
return Mathf.Clamp (angle, min, max);

}

I have a second script that is attached to the camera so it does not get destroyed:

function Awake () {
DontDestroyOnLoad (transform.gameObject);
}

And with the new level new main character is loaded with different settings so I can have original stay, But when the level is loaded the camera has no target and thus my level fails. Any clue how to assign the target to the mesh of the new object?

I have the var target : Transform; defined so im assuming all i need is a command like:

//everytime a new level is loaded{
target = //command to find the particular object in the scene I want to follow
}

but search as I have, I have not been able to figure out this seemingly easy question.

it’s already in your script :

function LateUpdate () { 
if(!target) {
//	 target = GameObject.Find("malePlayerwSkele 1");
return; 
}

if you want to call it from another go, you will need to use sendmessage or have a static

Well apparently the code does not work. When the new level loads the camera is slightly below the level and does not react when i move the keys. However as it is running I can manually drag the mesh of the main character into the target and it will work fine.

So I’m missing something here but I don’t know what.

i figured it out. All I was missing was the “.transform” and so Unity had no idea what i meant. Thanks for the help