Ejemplo n.º 1
0
        /// <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--;
                }
            }
        }
Ejemplo n.º 2
0
        /// <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;
                }
            }
        }
Ejemplo n.º 3
0
        /// <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);
                }
            }
        }
Ejemplo n.º 4
0
        /// <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();
            }
        }