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++) { int koma = frame / 3; if (Ground.I.Picture2.さやか接地攻撃.Length <= koma) { break; } // 移動 { const double SPEED = 1.0; if (1 <= DDInput.DIR_4.GetInput()) { Game.I.Player.X -= SPEED; } if (1 <= DDInput.DIR_6.GetInput()) { Game.I.Player.X += SPEED; } } AttackCommon.ProcPlayer_側面(); double xZoom = Game.I.Player.FacingLeft ? -1.0 : 1.0; if (frame == 6 * 3) { Game.I.Shots.Add(new Shot_さやか接地攻撃( Game.I.Player.X + 80.0 * xZoom, Game.I.Player.Y, Game.I.Player.FacingLeft )); } DDDraw.SetTaskList(Game.I.Player.Draw_EL); DDDraw.DrawBegin( Ground.I.Picture2.さやか接地攻撃[koma], Game.I.Player.X - DDGround.ICamera.X, Game.I.Player.Y - DDGround.ICamera.Y - 4.0 ); 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() { for (int frame = 0; ; frame++) { int koma = frame / 4; if (3 <= koma) { break; } // 移動 { const double SPEED = 3.0; if (Game.I.Player.FacingLeft) { Game.I.Player.X -= SPEED; } else { Game.I.Player.X += SPEED; } } AttackCommon.ProcPlayer_側面(); double xZoom = Game.I.Player.FacingLeft ? -1.0 : 1.0; DDDraw.SetTaskList(Game.I.Player.Draw_EL); DDDraw.DrawBegin( Ground.I.Picture2.さやか突き[koma], Game.I.Player.X - DDGround.ICamera.X + 30.0 * xZoom, Game.I.Player.Y - DDGround.ICamera.Y ); DDDraw.DrawZoom_X(xZoom); DDDraw.DrawEnd(); DDDraw.Reset(); yield return(true); } for (int frame = 0; frame < 60; frame++) { if ( 10 < frame && DDInput.C.GetInput() <= 0 // ? 特殊攻撃ボタンを離した。 ) { break; } int koma = 3 + (frame / 3) % 3; // 移動 { const double SPEED_X = 12.0; const double SPEED_Y = 2.0; if (Game.I.Player.FacingLeft) { Game.I.Player.X -= SPEED_X; } else { Game.I.Player.X += SPEED_X; } if (1 <= DDInput.DIR_8.GetInput()) { Game.I.Player.Y -= SPEED_Y; } if (1 <= DDInput.DIR_2.GetInput()) { Game.I.Player.Y += SPEED_Y; } } AttackCommon.ProcPlayer_脳天(); AttackCommon.ProcPlayer_接地(); if (AttackCommon.ProcPlayer_側面()) { break; } double xZoom = Game.I.Player.FacingLeft ? -1.0 : 1.0; Game.I.Shots.Add(new Shot_さやか突き( Game.I.Player.X + 50.0 * xZoom, Game.I.Player.Y, Game.I.Player.FacingLeft )); DDDraw.SetTaskList(Game.I.Player.Draw_EL); DDDraw.DrawBegin( Ground.I.Picture2.さやか突き[koma], Game.I.Player.X - DDGround.ICamera.X, Game.I.Player.Y - DDGround.ICamera.Y + 8.0 ); DDDraw.DrawZoom_X(xZoom); DDDraw.DrawEnd(); DDDraw.Reset(); yield return(true); } for (int frame = 0; ; frame++) { int koma = 6 + frame / 2; if (10 <= koma) { break; } double xZoom = Game.I.Player.FacingLeft ? -1.0 : 1.0; DDDraw.SetTaskList(Game.I.Player.Draw_EL); DDDraw.DrawBegin( Ground.I.Picture2.さやか突き[koma], Game.I.Player.X - DDGround.ICamera.X + 30.0 * xZoom, Game.I.Player.Y - DDGround.ICamera.Y ); DDDraw.DrawZoom_X(xZoom); DDDraw.DrawEnd(); DDDraw.Reset(); yield return(true); } // 後処理 { Game.I.Player.YSpeed = 0.0; } }
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); } }