-
-
Save Hamcha/6096905 to your computer and use it in GitHub Desktop.
| // Smooth Follow from Standard Assets | |
| // Converted to C# because I fucking hate UnityScript and it's inexistant C# interoperability | |
| // If you have C# code and you want to edit SmoothFollow's vars ingame, use this instead. | |
| using UnityEngine; | |
| using System.Collections; | |
| public class SmoothFollow : MonoBehaviour { | |
| // 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; | |
| // Place the script in the Camera-Control group in the component menu | |
| [AddComponentMenu("Camera-Control/Smooth Follow")] | |
| void LateUpdate () { | |
| // Early out if we don't have a target | |
| if (!target) return; | |
| // Calculate the current rotation angles | |
| float wantedRotationAngle = target.eulerAngles.y; | |
| float wantedHeight = target.position.y + height; | |
| float currentRotationAngle = transform.eulerAngles.y; | |
| float 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 | |
| var 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 | |
| transform.LookAt(target); | |
| } | |
| } |
// Place the script in the Camera-Control group in the component menu
[AddComponentMenu("Camera-Control/Smooth Follow")]
Unsure what this means - can you do this in Unity5? I couldn't see a way of doing it in the Add Component Menu
@azertyalex Drag the transform you'd like to follow onto "Target" in the inspector
when target rotate, the camera is shaking. why?
Best, Thanks :D
Absolute perfection, much appreciated!
Thanks!
It works fine and with all the comments it's easy to tweak according to your requirements.
Nicely done. Thanks -- worked better than mine.
Sweet, thank you! :D I'm updating my old projects from before 2012 and the standard asset scripts not working is making this a lot difficult that it should be, thank you so much! <3
no it doesnt dumbass
5 years later, seems like the dumb ass was you.
Thanks!
no it doesnt dumbass
r/confidentlyincorrect
this works:) thank you so much!
It works perfectly! Thank you for sharing
How do I set the target? I tried
void Start() { target = GameObject.FindGameObjectWithTag("Player").transform; }But that doesn't work