- Home /
Deplacement point & click help
Hey I want a point & click deplacement like LoL, dota or diablo for my project.
I already have a script but the problem is:
The vitess is always the same (my character took 2 second to do 1/50/200 meters), and for example I'd like to have a constant vitess for a constant distance. Like 2 second / 3 meters.
This is my script
var vitesseMouvement:float;
private var targetPosition:Vector3;
var obj1: Transform;
function Update(){
if(Input.GetKeyDown(KeyCode.Mouse1)){
var distance = Vector3.Distance(obj1.position, Input.mousePosition);
var playerPlane=new Plane(Vector3.up, transform.position);
var ray=Camera.main.ScreenPointToRay(Input.mousePosition);
var hitdist = 0.0;
if (playerPlane.Raycast (ray, hitdist)){
var targetPoint = ray.GetPoint(hitdist);
targetPosition=ray.GetPoint(hitdist);
var targetRotation=Quaternion.LookRotation(targetPoint-transform.position);
transform.rotation=targetRotation;
}
}
transform.position=Vector3.Lerp(transform.position,targetPosition,Time.maximumDeltaTime*vitesseMouvement/distance);
}
The result is, my character stop walking he just teleport to my mouse click
Answer by robertbu · May 03, 2013 at 02:58 PM
Define a speed variable (units per second). Then replace your Lerp() with MoveTowards():
transform.position = Vector3.MoveTowards(transform.position, targetPosition, speed*Time.deltaTime);
Answer by proandrius · May 03, 2013 at 03:01 PM
I suggest instead of Lerp, use transform.Translate or Mathf.Lerp because then you can define T which is time. Tham means you can say go from here to here in some amount of time.
Your answer
Follow this Question
Related Questions
How do you use a queuing mechanism in Unity? 1 Answer
Closest point on multiple lines? 2 Answers
Charging up the speed of an game object through a mouse click 3 Answers
Can't shoot towards mouse click point 1 Answer
Click and Drag Camera 3 Answers