protected override IEnumerable <bool> E_Draw() { for (int frame = 0; ; frame++) { if (DDInput.A.GetInput() == 1) // ? ジャンプ押下 { break; } //int koma = frame; int koma = frame / 2; //int koma = frame / 3; if (Ground.I.Picture2.Tewi_ジャンプ中攻撃.Length <= koma) { break; } double x = Game.I.Player.X; double y = Game.I.Player.Y; double xZoom = Game.I.Player.FacingLeft ? -1.0 : 1.0; bool facingLeft = Game.I.Player.FacingLeft; if (frame == 0) { // TODO: 当たり判定設定 } AttackCommon.ProcPlayer_移動(); AttackCommon.ProcPlayer_Fall(); AttackCommon.ProcPlayer_側面(); AttackCommon.ProcPlayer_脳天(); if (AttackCommon.ProcPlayer_接地()) { break; } DDDraw.SetTaskList(Game.I.Player.Draw_EL); DDDraw.DrawBegin( Ground.I.Picture2.Tewi_ジャンプ中攻撃[koma], x - DDGround.ICamera.X, y - DDGround.ICamera.Y ); DDDraw.DrawZoom_X(xZoom); DDDraw.DrawEnd(); DDDraw.Reset(); yield return(true); } }
protected override IEnumerable <bool> E_Draw() { for (int frame = 0; ; frame++) { if (1 <= frame && DDInput.B.GetInput() == 1) // ? 再発砲 { frame = 0; } double x = Game.I.Player.X; double y = Game.I.Player.Y; double xZoom = Game.I.Player.FacingLeft ? -1.0 : 1.0; bool facingLeft = Game.I.Player.FacingLeft; if (frame == 0) { Game.I.Shots.Add(new Shot_ほむら滞空攻撃( x + 50.0 * xZoom, y - 18.0, facingLeft )); } int koma = Math.Min((frame + 15) / 4, Ground.I.Picture2.ほむら滞空攻撃.Length - 1); AttackCommon.ProcPlayer_移動(); AttackCommon.ProcPlayer_Fall(); AttackCommon.ProcPlayer_側面(); AttackCommon.ProcPlayer_脳天(); if (AttackCommon.ProcPlayer_接地()) { break; } DDDraw.SetTaskList(Game.I.Player.Draw_EL); DDDraw.DrawBegin( Ground.I.Picture2.ほむら滞空攻撃[koma], x - DDGround.ICamera.X, y - DDGround.ICamera.Y ); DDDraw.DrawZoom_X(xZoom); DDDraw.DrawEnd(); DDDraw.Reset(); yield return(true); } }
protected override IEnumerable <bool> E_Draw() { DDGround.EL.Add(SCommon.Supplier(Effects.スライディング(Game.I.Player.X, Game.I.Player.Y + 20.0))); for (int frame = 0; ; frame++) { if (10 < frame) // ? 最低持続時間経過 { if (AttackCommon.GetPlayer_側面(4) != 3) // ? ここは立ち上がれる場所である。 { if (DDInput.A.GetInput() <= 0 || DDInput.DIR_2.GetInput() <= 0) // ? 下・ジャンプボタン少なくともどちらかを離している。 { break; } } } if (AttackCommon.GetPlayer_側面(2) != 0) // ? 壁に当たっている。 { if (AttackCommon.GetPlayer_側面(4) != 3) // ? ここは立ち上がれる場所である。 { if (DDInput.A.GetInput() == 1) // ? ジャンプボタンを押した。 { break; } } } if (1 <= DDInput.DIR_4.GetInput()) { Game.I.Player.FacingLeft = true; } if (1 <= DDInput.DIR_6.GetInput()) { Game.I.Player.FacingLeft = false; } // 移動 { const double SPEED = 10.0; if (Game.I.Player.FacingLeft) { Game.I.Player.X -= SPEED; } else { Game.I.Player.X += SPEED; } } //AttackCommon.ProcPlayer_移動(); AttackCommon.ProcPlayer_Fall(); AttackCommon.ProcPlayer_側面(2); AttackCommon.ProcPlayer_脳天(); if (!AttackCommon.ProcPlayer_接地()) { //Game.I.Player.AirborneFrame = 1; // 崖の淵に立ってしまわないように滞空状態にする。 Game.I.Player.AirborneFrame = SCommon.IMAX / 2; // ジャンプしてしまわないように十分大きな値を設定する。 break; } double xZoom = Game.I.Player.FacingLeft ? -1.0 : 1.0; DDDraw.SetTaskList(Game.I.Player.Draw_EL); DDDraw.DrawBegin( Ground.I.Picture.Chara_A01_Sliding, Game.I.Player.X - DDGround.ICamera.X, Game.I.Player.Y - DDGround.ICamera.Y ); DDDraw.DrawZoom_X(xZoom); DDDraw.DrawEnd(); DDDraw.Reset(); yield return(true); } }