- Home /
how make this script follow a target.
Hi and good night or day :) Please i need to know how I can make this script follow a target. /* Touch Orbit Programmed by: Randal J. Phillips (Caliber Mengsk)
Original Creation Date: 12/16/2011
Last Updated: 12/16/2011
Desctiption:
Simple orbit by one touch and drag, as well as pinch to zoom with two fingers.
*/
var target : Transform;
var x:float;
var y:float;
var xSpeed:float;
var ySpeed:float;
var pinchSpeed:float;
var distance:float = 10;
var minimumDistance:float = 5;
var maximumDistance:float = 100;
private var touch:Touch;
private var lastDist:float = 0;
private var curDist:float = 0;
private var gameCamera:Camera;
function Start ()
{
gameCamera = Camera.mainCamera;
}
function Update ()
{
if (Input.GetKeyDown(KeyCode.Escape))
{
Application.Quit();
}
if (Input.touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Moved)
{
//One finger touch does orbit
touch = Input.GetTouch(0);
x += touch.deltaPosition.x * xSpeed * 0.02;
y -= touch.deltaPosition.y * ySpeed * 0.02;
}
if (Input.touchCount > 1 && (Input.GetTouch(0).phase == TouchPhase.Moved || Input.GetTouch(1).phase == TouchPhase.Moved))
{
//Two finger touch does pinch to zoom
var touch1 = Input.GetTouch(0);
var touch2 = Input.GetTouch(1);
curDist = Vector2.Distance(touch1.position, touch2.position);
if(curDist > lastDist)
{
distance += Vector2.Distance(touch1.deltaPosition, touch2.deltaPosition)*pinchSpeed/10;
}else{
distance -= Vector2.Distance(touch1.deltaPosition, touch2.deltaPosition)*pinchSpeed/10;
}
lastDist = curDist;
}
if(distance <= minimumDistance)
{
//minimum camera distance
distance = minimumDistance;
}
if(distance >= maximumDistance)
{
//maximum camera distance
distance = maximumDistance;
}
//Sets rotation
var rotation = Quaternion.Euler(y, x, 0);
//Sets zoom
var position = rotation * Vector3(0.0, 0.0, -distance) + Vector3(0,0,0);
//Applies rotation and position
transform.rotation = rotation;
transform.position = position;
}
function OnGUI()
{
//Simple output to display the distance from the center
GUI.Label(Rect(0,0,Screen.width, Screen.height),distance.ToString());
}
Comment
Answer by nastasache · Mar 05, 2014 at 02:57 PM
I am using something like that (c#), I think it's easy to adapt:
GameObject target;
float rotateSpeed = 5.0f;
float moveSpeed = 5.0f;
void Update() {
// Rotate to the target
Quaternion rotation = Quaternion.LookRotation(target.transform.position - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * rotateSpeed);
// Then move forward
transform.Translate(Vector3.forward * Time.deltaTime * moveSpeed);
}
Your answer
Follow this Question
Related Questions
How to do a plane follower? 3 Answers
Camera rotation around player while following. 6 Answers
player following touch position 0 Answers
Keeping camera stay put in the y position 2 Answers
Control the camera with a half of the touch screen 0 Answers