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! ![]()
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);
}
}