public override void UpdateDelta(float modDeltaTime) { base.UpdateDelta(modDeltaTime); Vector3 position = transform.position; timer += modDeltaTime; stateTimer += modDeltaTime; if (stateTimer >= transitionCurrent.stateTimerMax) { stateTimer %= transitionCurrent.stateTimerMax; state = transitionCurrent.stateNext; StateInit(); } // Hovering switch (state) { case GHZBossState.Centering: case GHZBossState.LoweringPendulum: case GHZBossState.Starting: case GHZBossState.MovingLeft: case GHZBossState.WaitRight: case GHZBossState.MovingRight: case GHZBossState.WaitLeft: position.y += Mathf.Sin((timer / 2F) * Mathf.PI * 2) * 0.005F; break; } switch (state) { case GHZBossState.Falling: velocity.y -= 0.09375F * Utils.physicsScale; break; case GHZBossState.Recovering: velocity.y += 0.03125F * Utils.physicsScale; break; } position += velocity * modDeltaTime; transform.position = position; }
public override void Defeat(Character sourceCharacter) { base.Defeat(sourceCharacter); state = GHZBossState.Exploding; StateInit(); }