Move to a clicked point?

So basically, I want the cube to move into the clicked point (left click). Unfortunately, I’ve been trying to figure it out yet I’ve still failed. What is the best way to make the cube move to the clicked point? Here’s the code:

*The code’s supposed to be put into the “code here” section". Thank you very much! :slight_smile:

using UnityEngine;
using System.Collections;
using System;

public class VehicleAvoidance : MonoBehaviour
{
public float speed = 20.0f;
public float mass = 5.0f;
public float force = 50.0f;
public float minimumDistToAvoid = 20.0f;

//Actual speed of the vehicle 
private float curSpeed;
private Vector3 targetPoint;
private float initialSpeed;

// Use this for initialization
void Start () 
{
    mass = 5.0f;
    targetPoint = Vector3.zero;
	initialSpeed = speed;
}

void OnGUI()
{
    GUILayout.Label("Click anywhere to move the vehicle to the clicked point");
}

// Update is called once per frame
void Update () 
{
    //Vehicle move by mouse click
    RaycastHit hit;
    var ray = Camera.main.ScreenPointToRay(Input.mousePosition);

    if(Input.GetMouseButtonDown(0) && Physics.Raycast(ray, out hit, 100.0f))
    {
        targetPoint = hit.point;
    }
	
	Vector3 dir = new Vector3(0.0f, 0.0f, 0.0f);
	
	//1- Compute the directional vector to the target position
	// CODE HERE

					

	//2- Exit the update function, so that the vehicle stops when the target point is 1 meter away
	// CODE HERE

	
    //Adjust the speed to delta time
    curSpeed = speed * Time.deltaTime;
	
	//Apply obstacle avoidance
    dir += AvoidObstacles();
	dir.Normalize();

    //Rotate the vehicle to its target directional vector
    var rot = Quaternion.LookRotation(dir);
    transform.rotation = Quaternion.Slerp(transform.rotation, rot, 5.0f *  Time.deltaTime);

    //Move the vehicle towards the target point
    transform.position += transform.forward * curSpeed;
}

//Calculate the new directional vector to avoid the obstacle
public Vector3 AvoidObstacles()
{
	return new Vector3(0.0f, 0.0f, 0.0f);
}

}

1 Answer

1

Hi crazykalel,

I would recommend giving this solution a go:

You’ll still have to implement the turn rate, but the movement should work using MoveTowards().

Regards,
Ezro