public void Update()
 {
     if (isMoving)
     {
         float dist = Vector3.Distance(transform.position, this.destination);
         if (dist != Mathf.Infinity && agent.pathStatus == NavMeshPathStatus.PathComplete &&
             dist <= 10.0f)
         {
             Debug.Log("Invoking Finished Move Event");
             isMoving = false;
             GetComponent <Player>().SetSquare(destinationSquare);
             OnFinishedAction?.Invoke(this, null);
         }
     }
 }
Example #2
0
        // Update is called once per frame
        void Update()
        {
            //if (Input.GetKeyDown(KeyCode.A))
            //{
            //    List<Square> squares = GridSystem.Instance.GetRandomListOfSquares(0.5f);
            //    SuperAttackSquares(squares);
            //}

            if (playingAttack)
            {
                foreach (var spike in spikeGameObjects)
                {
                    Vector3 spikePos  = spike.Item1;
                    float   sinOffset = ((Mathf.PI / 2.0f) * this.SinWaveAttackFrequency);
                    float   sinValue  = Mathf.Sin(((sinTime - sinOffset) / this.SinWaveAttackFrequency)) + .25f; // Value between 0 and 1
                    spike.Item2.transform.position = new Vector3(spikePos.x, spikePos.y + (sinValue * DistanceOfMovement), spikePos.z);
                }
                // Apply Damage after finishing animating Attack
                sinTime += Time.deltaTime;

                // End Attack and apply damage
                if (sinTime > this.attackTime)
                {
                    List <Player> players = BattleManager.Instance.GetPlayers();
                    foreach (var spike in spikeGameObjects)
                    {
                        foreach (Player player in players)
                        {
                            if (spike.Item3 == player.CurrentSquare)
                            {
                                player.TakeDamage(BaseAttackPower);
                            }
                        }
                    }
                    ResetAttack();
                    OnFinishedAction?.Invoke(this, null);
                }
            }
        }