// Update is called once per frame void Update() { if (Input.GetButtonDown("Fire2")) { RaycastHit hitInfo; int layerMask = 1 << LayerMask.NameToLayer("Ground"); if (Physics.Raycast(Camera.main.transform.position, Camera.main.transform.forward, out hitInfo, maxTargetDistance, layerMask)) { _moveTo.SetTarget(hitInfo.point); } } }
private IEnumerator ProcessPatrol() { WaitForSeconds patrolCheckPeriod = new WaitForSeconds(0.5f); string nextState = String.Empty; _speedMultiplier = _patrolSpeedMultiplier; _move.StartMovement(); while (true) { if (_trap != null) { nextState = GetTrappedState(); break; } if (SearchEnemies()) { nextState = "pursuit"; // TODO: тут разумеется нужно убрать жесткую привязку к игроку и определять конкретного врага через SearchEnemies _move.SetTarget(Main.Instance.Player.transform.position); break; } else if (_move.TargetReached()) { _move.SetTarget(_patrol.NextPoint()); _move.Agent.stoppingDistance = 0; } yield return(patrolCheckPeriod); } yield return(nextState); }