What I meant by slow parent is that I want the camera to not move immediately my third person controller moves so it won't look as though the earth is moving. The camera is the child of the player
Answer
Well, CameraFollow
or SmoothFollow
script may help you in this issue. Here I'm pasting the SmoothFollow
code.
- Make a script named
SmoothFollow
. - Attach it to Camera
- Give the target transform from inspector (your player in your case)
- Play with other attributes to set your desired behaviour.
Code,
using UnityEngine;
using System.Collections;
public class SmoothFollow : MonoBehaviour
{
public bool shouldRotate = true;
// The target we are following
public Transform target;
// The distance in the x-z plane to the target
public float distance = 10.0f;
// the height we want the camera to be above the target
public float height = 5.0f;
// How much we
public float heightDamping = 2.0f;
public float rotationDamping = 3.0f;
float wantedRotationAngle;
float wantedHeight;
float currentRotationAngle;
float currentHeight;
Quaternion currentRotation;
void LateUpdate ()
{
if (target){
// 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 = new Vector3 (transform.position.x, currentHeight, transform.position.z);
// Always look at the target
if (shouldRotate)
transform.LookAt (target);
}
}
}
No comments:
Post a Comment