/// <summary> /// 火を投げる /// </summary> private void ThrowFire() { if (fireNum > 1) { //inputState.IsKeyDown(Keys.X) if (inputState.CheckTriggerKey(Parameter.ThrowKey, Parameter.ThrowButton)) { Vector2 firePos = Vector2.Zero; Vector2 fireVelo = Vector2.Zero; Fire fire = new Fire(firePos, fireVelo); //投げ出した火の位置と速度を計算(初期位置は自身とぶつからないように) if (diretion == Direction.UP) { fireVelo = new Vector2(0, -1f); firePos = new Vector2(position.X + ColRect.Width / 2 - fire.ColRect.Width / 2, position.Y - fire.ColRect.Height); } else if (diretion == Direction.LEFT) { fireVelo = new Vector2(-1f, -2f); firePos = new Vector2(position.X - fire.ColRect.Width / 2, position.Y - fire.ColRect.Height); } else if (diretion == Direction.RIGHT) { fireVelo = new Vector2(1f, -2f); firePos = new Vector2(position.X + ColRect.Width - fire.ColRect.Width / 2, position.Y - fire.ColRect.Height); } fireVelo.Normalize(); fireVelo *= Parameter.FireSpeed; fire.Position = firePos; fire.Velocity = fireVelo + velocity; firesList.Insert(0, fire); fireNum--; } } }
/// <summary> /// マップ上いある火と位置交換(最後に投げ出した火は最初に交換) /// </summary> public void Teleport() { if (firesList.Count > 0) { if (inputState.CheckTriggerKey(Parameter.TeleportKey, Parameter.TeleportButton)) { //firesList.Add(new Fire(position, velocity)); Vector2 tempPos = firesList[0].Position; Vector2 tempVelo = firesList[0].Velocity; firesList[0].Position = position; firesList[0].Velocity = velocity; position = tempPos; velocity = tempVelo; Fire tempfire = firesList[0]; firesList[0] = firesList[firesList.Count - 1]; firesList[firesList.Count - 1] = tempfire; } } }
/// <summary> /// マップ上いある火と位置交換(最後に投げ出した火は最初に交換) /// </summary> private void Teleport() { if (firesList.Count > 0) { if (inputState.CheckTriggerKey(Parameter.TeleportKey, Parameter.TeleportButton)) { Vector2 tempPos = firesList[0].Position; Vector2 tempVelo = firesList[0].Velocity; firesList[0].Position = position; firesList[0].Velocity = velocity; position = tempPos; velocity = tempVelo; Fire tempfire = firesList[0]; firesList.RemoveAt(0); firesList.Add(tempfire); //葉梨竜太 tempfire.Velocity = new Vector2(0, Parameter.FireFall); } } }
/// <summary> /// 火を投げる /// </summary> private void ThrowFire() { //投げ出した火の位置と速度を計算(初期位置は自身とぶつからないように) //Speedを固定にした //上下左右にした isthrow = true; if (diretion == Direction.UP || inputState.CheckDownKey(Keys.Up, Buttons.LeftThumbstickUp)) { aim = new Vector2(0, -Parameter.FireSpeed); aimpos = new Vector2(position.X, position.Y - 48); } else if (diretion == Direction.DOWN || inputState.CheckDownKey(Keys.Down, Buttons.LeftThumbstickDown)) { aim = new Vector2(0, Parameter.FireSpeed); aimpos = new Vector2(position.X, position.Y + 60); isthrow = isOnGround ? false : true; } else if (diretion == Direction.LEFT || inputState.CheckDownKey(Keys.Left, Buttons.LeftThumbstickLeft)) { aim = new Vector2(-Parameter.FireSpeed, 0); aimpos = new Vector2(position.X - 50, position.Y); } else if (diretion == Direction.RIGHT || inputState.CheckDownKey(Keys.Right, Buttons.LeftThumbstickRight)) { aim = new Vector2(Parameter.FireSpeed, 0); aimpos = new Vector2(position.X + 50, position.Y); } if (fireNum > 0) { if (inputState.CheckTriggerKey(Parameter.ThrowKey, Parameter.ThrowButton)) { if (isthrow) { Vector2 fireVelo = aim; Vector2 firePos = aimpos; Fire fire = new Fire(firePos, fireVelo, watersList); //葉梨竜太 //単位ベクトル化 fireVelo.Normalize(); fire.Velocity = fireVelo * Parameter.FireSpeed; //葉梨竜太 fire.SetStartPos(); firesList.Insert(0, fire); fireNum--; } //投げる状態に入る animePlayer.PlayAnimation(throwAnime); playerMotion = PlayerMotion.THROW; sound.PlaySE("fire1"); } aim.Normalize(); aimpos.X = aimpos.X + (Parameter.FireFly * 64 * aim.X); aimpos.Y = aimpos.Y + (Parameter.FireFly * 64 * aim.Y); AimCheck(); } }