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); } } }
// 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); } } }