public override void DoAction() { animator.SetTrigger("Attack"); Vector3 normalVector = (targetObject.transform.position - transform.position).normalized; transform.rotation = Quaternion.LookRotation(normalVector); transform.rotation = new Quaternion(0f, transform.rotation.y, 0, transform.rotation.w); int ShotCount = (2 * bossPhase) + 1; float angle = ((ShotCount - 1) * 0.5f) * AngleOffset; for (int i = 0; i < ShotCount; i++) { EnemyFireBall enemyFireBall = FireballList.Dequeue(); LaunchedFireballList.Enqueue(enemyFireBall); enemyFireBall.gameObject.SetActive(true); SetFireball(enemyFireBall, normalVector, angle); enemyFireBall.AttackArea.Power = (int)Power; fireballTimer = GameTimeManager.Instance.PopTimer(); fireballTimer.SetTimer(timeToReturn, false); fireballTimer.Callback = timerCallback; fireballTimer.StartTimer(); angle -= AngleOffset; } }
private void SetFireball(EnemyFireBall enemyFireBall, Vector3 normalVector, float angle) { enemyFireBall.gameObject.transform.position = (transform.rotation * Vector3.forward * shotOffset) + transform.position; enemyFireBall.transform.rotation = Quaternion.LookRotation(normalVector); enemyFireBall.transform.Rotate(0, angle, 0); enemyFireBall.rigidbodyComponent.velocity = enemyFireBall.gameObject.transform.rotation * Vector3.forward * fireballSpeed; }
public AttackPattern2(EnemyFireBall fireBall, GameTimer fireballLifeTimer, Animator animator, Transform transform, Rigidbody rigidbodyComponent, BattlePlayer targetObject, Vector3 position, float fireballSpeed, TimerCallback pushFireball, ChangeStateCallback changeStateCallback, float Power) : base(animator, rigidbodyComponent) { this.fireBall = fireBall; this.fireballLifeTimer = fireballLifeTimer; this.animator = animator; this.transform = transform; this.rigidbodyComponent = rigidbodyComponent; this.targetObject = targetObject; this.fireballSpeed = fireballSpeed; this.pushFireball = pushFireball; this.changeStateCallback = changeStateCallback; this.Power = Power; }