- Home /
Select first, then move to selected area
Hello, I have a coffee game, Everything works correctly from now on. I have a waitress that when clicked on tables, it goes to the directed area with pathfinding. I will add some clients to the scene and we will select the client and let the client move the tables too! But when i do that, my own character also moves to the tables! So I need an idea that how we select the client and move there only? So that only selected character will move? (think like chess, we choose one and move)
Here is method to move player to the tables.
namespace Pathfinding {
/// <summary>
/// Sets the destination of an AI to the position of a specified object.
/// This component should be attached to a GameObject together with a movement script such as AIPath, RichAI or AILerp.
/// This component will then make the AI move towards the <see cref="target"/> set on this component.
///
/// See: <see cref="Pathfinding.IAstarAI.destination"/>
///
/// [Open online documentation to see images]
/// </summary>
[UniqueComponent(tag = "ai.destination")]
[HelpURL("http://arongranberg.com/astar/docs/class_pathfinding_1_1_a_i_destination_setter.php")]
public class AIDestinationSetter : VersionedMonoBehaviour {
/// <summary>The object that the AI should move to</summary>
public Transform target;
IAstarAI ai;
private Transform _lastClickedPos;
private bool _moving;
void OnEnable () {
ai = GetComponent<IAstarAI>();
// Update the destination right before searching for a path as well.
// This is enough in theory, but this script will also update the destination every
// frame as the destination is used for debugging and may be used for other things by other
// scripts as well. So it makes sense that it is up to date every frame.
if (ai != null) ai.onSearchPath += Update;
}
void OnDisable () {
if (ai != null) ai.onSearchPath -= Update;
}
/// <summary>Updates the AI's destination every frame</summary>
void Update ()
{
MoveToTarget();
}
private void MoveToTarget()
{
RaycastHit2D rayHit = Physics2D.GetRayIntersection(Camera.main.ScreenPointToRay(Input.mousePosition));
if (Input.GetMouseButtonDown(0) && rayHit.collider != null)
{
_lastClickedPos = rayHit.transform;
var destinationPoint = _lastClickedPos.GetChild(0).gameObject;
Debug.Log(destinationPoint.transform.position);
if (ai != null)
{
ai.destination = destinationPoint.transform.position;
}
}
}
}
}
Your answer
Follow this Question
Related Questions
selected object in array lost in translation 0 Answers
Quests/Dialogue (C#) 0 Answers
Managing and Referencing Attached Scripts Best Practice? 2 Answers
Selecting imported geometry selects ALL the geometry and uncontrollable for multiple objects 1 Answer
Trying to make gameObjects the target on right click 2 Answers