Saturday, December 2, 2017

motion - how can I make camera to follow smoothly


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

Simple past, Present perfect Past perfect

Can you tell me which form of the following sentences is the correct one please? Imagine two friends discussing the gym... I was in a good s...