- Home /
How to save a destination on a variable from NavMesh clicking
I have this modified script from the NavMesh tutorial on the stealth project, i was trying to access the animator throu the script so when the player clicks it would also play the animation, i made that changing the Speed float of the animator but i need to find a way to tell the script that the player has reached the destination so it would change again to zero. any ideas? i'm pretty new to scripting.
heres the script
using UnityEngine; using System.Collections;
public class NavCharScript : MonoBehaviour { public float turnSmoothing = 15f; // A smoothing value for turning the player. public float speedDampTime = 0.0f;
NavMeshAgent agent;
private Animator anim;
private DoneHashIDs hash;
private Vector3 destination;
void Awake ()
{
// Setting up the references.
anim = GetComponent<Animator> ();
hash = GameObject.FindGameObjectWithTag (DoneTags.gameController).GetComponent<DoneHashIDs> ();
// Use this for initialization
}
void Start ()
{
agent = GetComponent<NavMeshAgent> ();
}
// Update is called once per frame
void Update ()
{
if (Input.GetMouseButtonDown (0)) {
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if(Physics.Raycast(ray, out hit, 100))
{
agent.SetDestination(hit.point);
anim.SetFloat(hash.speedFloat, 1.0f, speedDampTime, Time.deltaTime); }
}
}
void Rotating (float horizontal, float vertical)
{
// Create a new vector of the horizontal and vertical inputs.
Vector3 targetDirection = new Vector3(horizontal, 0f, vertical);
// Create a rotation based on this new vector assuming that up is the global y axis.
Quaternion targetRotation = Quaternion.LookRotation(targetDirection, Vector3.up);
// Create a rotation that is an increment closer to the target rotation from the player's rotation.
Quaternion newRotation = Quaternion.Lerp(rigidbody.rotation, targetRotation, turnSmoothing * Time.deltaTime);
// Change the players rotation to this new rotation.
rigidbody.MoveRotation(newRotation);
}
}
Answer by Narv · Jan 23, 2014 at 08:11 PM
You could check the remaining distance to the path end using:
http://docs.unity3d.com/Documentation/ScriptReference/NavMeshAgent-remainingDistance.html
and then if it is within a certain threshold from the end you can start scaling the speed down or whatever you want with it.
Your answer
Follow this Question
Related Questions
Controlling animation with mouse 0 Answers
best pathfinding system? 1 Answer
How to find where a navagent will be? 1 Answer
Increase size of obstacle - navmesh 1 Answer
How to make AICharacterController able to walk on walls and ceilings? 0 Answers