void Update() { if (Input.GetMouseButtonUp(1)) { if (EventSystem.current.IsPointerOverGameObject()) { return; } RaycastHit hit = RaycastMousePosition(); if (hit.transform.tag == "Movement Target") { MovementTarget movementTarget = hit.transform.gameObject.GetComponent <MovementTarget>(); movementTarget.WaitForArrival(); if (movementTarget.hasAlternativeDestination) { playerMover.MoveTo(movementTarget.alternativeDestination.position); } else { playerMover.MoveTo(movementTarget); } } if (hit.transform.tag == "Ground") { playerMover.MoveTo(hit.point); } } }
void Awake() { movementTarget = GetComponent <MovementTarget>(); movementTarget.TargetReached += () => GiveItem(); ReceiveItem(itemDB.GetRandomItem()); ReceiveItem(itemDB.GetRandomItem()); ReceiveItem(itemDB.GetRandomItem()); }
public override void OnInspectorGUI() { base.OnInspectorGUI(); MovementTarget movementTarget = (MovementTarget)target; if (movementTarget.hasAlternativeDestination) { movementTarget.alternativeDestination = (Transform)EditorGUILayout.ObjectField("Alternative Destination", movementTarget.alternativeDestination, typeof(Transform), true); } }
//MovementTarget movementTarget; void Update() { if (Input.GetMouseButton(1) && !playerAI.canMove && !waitForRender) { if (EventSystem.current.IsPointerOverGameObject()) { return; } RaycastHit hit = RaycastGround(); if (hit.transform.tag == "Ground") { waitForRender = true; pointer.gameObject.SetActive(false); playerAI.destination = hit.point; playerAI.SearchPath(); // Дальше, как только ИИ вычислит путь, сработает 'pathCallback', и запустится подписанный на него // метод 'RenderPath', который отрисует путь. } if (hit.transform.tag == "Movement Target") { waitForRender = true; pointer.gameObject.SetActive(false); MovementTarget movementTarget = hit.transform.GetComponent <MovementTarget>(); if (movementTarget.hasAlternativeDestination) { playerAI.destination = movementTarget.alternativeDestination.position; playerAI.SearchPath(); } else { playerAI.destination = hit.transform.position; playerAI.SearchPath(); } // Дальше, как только ИИ вычислит путь, сработает 'pathCallback', и запустится подписанный на него // метод 'RenderPath', который отрисует путь. } } if (!Input.GetMouseButton(1)) { pointer.gameObject.SetActive(true); } }
private void SetMoveTarget(MovementTarget target) { if (target == MovementTarget.Player) { moveTarget = closestPlayer.transform.position; // Debug.Log("Moving to " + closestPlayer.name, closestPlayer); } else if (target == MovementTarget.Patrol) { //Instantiate a box at the movetarget and check if its inside our box if (!patrolCheckFrame) { tempPos = RandomNavSphere(transform.position, 20); currentCheckBox = (GameObject)Instantiate(boxCheck, tempPos, Quaternion.identity); currentCheckBox.name = "PatrolCheck"; patrolCheckFrame = true; } else { if (patrolArea.GetIsInBox()) { moveTarget = tempPos; } else { moveTarget = transform.position; } patrolArea.SetIsInBox(false); if (currentCheckBox) { Destroy(currentCheckBox); } patrolCheckFrame = false; } } GetComponent <g_AIRotateToTarget>().SetTargetTransform(moveTarget); }
void Awake() { movementTarget = GetComponent <MovementTarget>(); movementTarget.TargetReached += ActivateShopMode; }