- Home /
How can i do so when my car moves an object follows it?
I want e.g a box to follow the car when it moves.
Answer by JDPennock · Mar 17, 2012 at 06:32 PM
There are lots of ways to do this. You will need to be more specific if you want to get a good answer. The simplest way is to just make your box a child of your car gameobject, i.e. drag the box onto the car in the hierarchy and pull is position back a bit. Then since it is a child of the car whenever the car moves it will move too. There are also a couple of follow scripts included in the standard assets.
/*
This camera smoothes out rotation around the y-axis and height. Horizontal Distance to the target is always fixed.
There are many different ways to smooth the rotation but doing it this way gives you a lot of control over how the camera behaves.
For every of those smoothed values we calculate the wanted value and the current value. Then we smooth it using the Lerp function. Then we apply the smoothed values to the transform's position. */
// The target we are following var target : Transform; // The distance in the x-z plane to the target var distance = 10.0; // the height we want the camera to be above the target var height = 5.0; // How much we var heightDamping = 2.0; var rotationDamping = 3.0;
// Place the script in the Camera-Control group in the component menu @script AddComponentMenu("Camera-Control/Smooth Follow")
function LateUpdate () { // Early out if we don't have a target if (!target) return;
// Calculate the current rotation angles
var wantedRotationAngle = target.eulerAngles.y;
var wantedHeight = target.position.y + height;
var currentRotationAngle = transform.eulerAngles.y;
var 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.y = currentHeight;
// Always look at the target
transform.LookAt (target);
}
that one is made for camera but you could attach it to anything really.
there is also this one for 2D.
var target : Transform; var smoothTime = 0.3; private var thisTransform : Transform; private var velocity : Vector2;
function Start() { thisTransform = transform; }
function Update() { thisTransform.position.x = Mathf.SmoothDamp( thisTransform.position.x, target.position.x, velocity.x, smoothTime); thisTransform.position.y = Mathf.SmoothDamp( thisTransform.position.y, target.position.y, velocity.y, smoothTime); }
Those should get you started.