示例#1
0
    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;
    }
示例#2
0
 public override void Defeat(Character sourceCharacter)
 {
     base.Defeat(sourceCharacter);
     state = GHZBossState.Exploding;
     StateInit();
 }