protected override void MoveToTarget() { if (!isInitialized) { InitalizeEnemy(); isInitialized = true; } if (flipped) { orbTransformRoot.localRotation = Quaternion.Euler(0, 0, 0); } else { orbTransformRoot.localRotation = Quaternion.Euler(0, 180, 0); } base.MoveToTarget(); if (isOrbDead) { return; } #region OrbMovement //Increment timer: if (!orbIsMovingToNextPosition) { orbMovementTimer += Time.deltaTime; } if (orbMovementTimer >= orbMovementWaitIntervals) { orbIsMovingToNextPosition = true; orbMovementTimer = 0; } //Update orb positions. if (orbIsMovingToNextPosition) { Vector3 localOrbTarget = currentOrbTargetTransform.position; Vector3 newOrbPosition = Vector3.MoveTowards(orb.transform.position, localOrbTarget, orbMovementVelocity * Time.deltaTime); orb.transform.position = newOrbPosition; if (Vector3.Distance(orb.transform.position, localOrbTarget) < 0.1f) { currentOrbTransform = currentOrbTargetTransform; currentTargetTransformIndex += 1; currentTargetTransformIndex %= orbPositions.Length; currentOrbTargetTransform = orbPositions[currentTargetTransformIndex]; orbIsMovingToNextPosition = false; orb.Attack(playerTransform); } } #endregion OrbMovement }