- Home /
Question about Click to Move effect within code.
Hi! I am still learning about the code needed to do various functions and I have a script made for Click to Move an object but, what I wanted to know is what type of code would I have to put into the script or make an entire new script just for the effect when I click onto the floor.
Here is my script I run for Click to Move:
private var targetPosition:Vector3;
var speed = 60;
function Update () {
if(Input.GetKeyDown(KeyCode.Mouse0))
{
speed = 5;
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;
}
}
var dir:Vector3 = targetPosition - transform.position;
var dist:float = dir.magnitude;
var move:float = speed * Time.deltaTime;
if(dist > move){
transform.position += dir.normalized * move;
} else {
transform.position = targetPosition;
}
transform.position += (targetPosition - transform.position).normalized * speed * Time.deltaTime;
}
What problem do you have? Does your code not work? What happens? Or does not happen?
So I tried to look around to find out how to put a script on an object which when I click to an area it would display a particle or some image. I found this but I just dont know now to iterate it: function Start () {
clickTimer ();
}
function Update () {
}
function clickTimer () {
yield WaitForSeconds(0.2);
Destroy(this.gameobject);
}
Answer by livevlad · Feb 25, 2014 at 01:24 PM
If your issue is how to move a specific object with your script, check first if the mouse is on this object.
if ( Input.GetMouseButtonDown(0)){
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
if (Physics.Raycast (ray, hit, 100.0f)){
if(hit.transform.gameobject.transform.GetInstanceId() == this.transform.GetInstanceId()){
// start moving
}
}
}
Here I considered that your script was attached to the object you'd want to move.
Hope it helps !
So for this do I replace the line of code that I have or do I put it in as another if function because, I did try to replace the similar line of code with yours and I get 3 errors:
1 expected ';' after the RaycastHit hit; 1 expected ';' after the (Input.mousePosition); and within the same line: Unexpected token: ray
You are right, I edited the code above. But this code does not do everything, you have to use yours to.
Where you have the "start moving", save the mouse's original position on the plane.
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
I get errorsfor my Click to Move Script 0 Answers
Click to move on a sphere (planetary gravity) 0 Answers
Move to clicked hitpoint 2 Answers
How Can I write a Click To Move Script? 2 Answers