/// <summary>
        /// 参考: http://hoge465.seesaa.net/article/421400008.html
        /// </summary>
        private IEnumerator StartSlideCoroutine()
        {
            var player = PlayerIndexes.FromArrayIndex(this.playerIndex);

            Vector3 inPosition = new Vector3(
                ThisSceneDto.Table[cursorColumn].X,
                ThisSceneDto.PlayerDTOs[player].LocationY,
                0.0f);                                              // スライドイン後の位置
            float duration = 1.0f;                                  // スライド時間(秒)

            float   startTime = Time.time;                          // 開始時間
            Vector3 startPos  = playerChar.transform.localPosition; // 開始位置
            Vector3 moveDistance;                                   // 移動距離および方向

            moveDistance = (inPosition - startPos);

            while ((Time.time - startTime) < duration)
            {
                playerChar.transform.localPosition = startPos + moveDistance * animCurve.Evaluate((Time.time - startTime) / duration);
                yield return(0);        // 1フレーム後、再開
            }
            playerChar.transform.localPosition = startPos + moveDistance;

            animator.SetTrigger(ThisSceneDto.TriggerStay);
        }
Пример #2
0
        void Start()
        {
            var player = PlayerIndexes.FromArrayIndex(this.playerIndex);

            mainCameraScript = GameObject.Find("Main Camera").GetComponent <CameraBehaviour>();
            #region 当たり判定
            opponent          = CommonScript.ReverseTeban(player);
            opponentHitboxTag = ThisSceneDto.HitboxTags[this.Opponent][(int)HitboxIndex.Hitbox];

            hitboxsSpriteRenderer = new SpriteRenderer[] {
                GameObject.Find(ThisSceneDto.HitboxPaths[player][(int)HitboxIndex.Hitbox]).GetComponent <SpriteRenderer>(),
                GameObject.Find(ThisSceneDto.HitboxPaths[player][(int)HitboxIndex.Weakbox]).GetComponent <SpriteRenderer>(),
                GameObject.Find(ThisSceneDto.HitboxPaths[player][(int)HitboxIndex.Strongbox]).GetComponent <SpriteRenderer>(),
            };
            weakboxCollider2D = GameObject.Find(ThisSceneDto.HitboxPaths[player][(int)HitboxIndex.Weakbox]).GetComponent <BoxCollider2D>();
            #endregion
            #region ジャンプ
            groundLayer = LayerMask.GetMask("Ground");
            Rigidbody2D = GetComponent <Rigidbody2D>();
            animator    = GetComponent <Animator>();
            #endregion

            // x位置を共有できるようにするぜ☆
            ThisSceneDto.PlayerToTransform[player] = transform;
        }
Пример #3
0
        // calculate origin for screen as an index into the level
        int CalcScreenIndex()
        {
            var flick = _gamedef.GetSetting(OptionSetting.flickscreen, (Pair <int, int>)null);
            var zoom  = _gamedef.GetSetting(OptionSetting.zoomscreen, (Pair <int, int>)null);

            if ((flick == null && zoom == null) || !PlayerIndexes.Any())
            {
                return(0);
            }
            var pindex = PlayerIndexes[0];
            var width  = _level.Width;
            var height = _level.Height;

            if (flick != null)
            {
                var x = flick.Item1 * (pindex % width / flick.Item1);
                var y = flick.Item2 * (pindex / width / flick.Item2);
                return(width * y + x);
            }
            else
            {
                var x = Math.Max(0, Math.Min(width - zoom.Item1, pindex % width - zoom.Item1 / 2));
                var y = Math.Max(0, Math.Min(height - zoom.Item2, pindex / width - zoom.Item2 / 2));
                return(width * y + x);
            }
        }
Пример #4
0
        void Pull_HardKick()
        {
            var player = PlayerIndexes.FromArrayIndex(this.playerIndex);

            mainCameraScript.PublicPlayerDTOs[player].AttackPower = 100.0f;

            // アニメーションの開始
            animator.SetTrigger(ThisSceneDto.TriggerAtkHk);
        }
Пример #5
0
        void Pull_MediumPunch()
        {
            var player = PlayerIndexes.FromArrayIndex(this.playerIndex);

            mainCameraScript.PublicPlayerDTOs[player].AttackPower = 50.0f;

            // アニメーションの開始
            animator.SetTrigger(ThisSceneDto.TriggerAtkMp);
        }
Пример #6
0
        FacingOpponentLR GetFacingOfOpponentLR()
        {
            var player = PlayerIndexes.FromArrayIndex(this.playerIndex);

            // 自分と相手の位置(相手が右側にいるとき正となるようにする)
            if (0 <= ThisSceneDto.PlayerToTransform[CommonScript.ReverseTeban(player)].position.x - transform.position.x)
            {
                return(FacingOpponentLR.Right);
            }
            return(FacingOpponentLR.Left);
        }
        // Use this for initialization
        void Start()
        {
            var player = PlayerIndexes.FromArrayIndex(this.playerIndex);

            animator         = GetComponent <Animator>();
            mainCameraScript = GameObject.Find("Main Camera").GetComponent <CameraBehaviour>();

            cursorColumn  = 0;
            myRigidbody2D = GetComponent <Rigidbody2D>();
            playerChar    = GameObject.Find(GameObjectPaths.All[new GameObjectIndex(player, GameObjectTypeIndex.Player)]).GetComponent <Text>();
            face          = GameObject.Find(GameObjectPaths.All[new GameObjectIndex(player, GameObjectTypeIndex.Face)]).GetComponent <Image>();
            myName        = GameObject.Find(GameObjectPaths.All[new GameObjectIndex(player, GameObjectTypeIndex.Name)]).GetComponent <Text>();

            ChangeCharacter();
        }
        private void ChangeCharacter()
        {
            var player = PlayerIndexes.FromArrayIndex(this.playerIndex);

            // 選択キャラクター変更
            CharacterIndex character = ThisSceneDto.Table[cursorColumn].CharacterIndex;

            CommonScript.UseCharacters[player] = character;
            // 顔変更
            Sprite[] sprites = Resources.LoadAll <Sprite>(CommonScript.CharacterAndSlice_to_faceSprites[(int)character, (int)ResultFaceSpriteIndex.All]);
            string   slice   = CommonScript.CharacterAndSlice_to_faceSprites[(int)character, (int)ResultFaceSpriteIndex.Win];

            face.sprite = System.Array.Find <Sprite>(sprites, (sprite) => sprite.name.Equals(slice));
            // キャラクター名変更
            myName.text = ThisSceneDto.Table[(int)CommonScript.UseCharacters[player]].Name;
        }
Пример #9
0
        ///// <summary>
        ///// 現在のアニメーション・クリップに対応したデータを取得。
        ///// </summary>
        ///// <returns></returns>
        //public CliptypeExRecordable GetCurrentCliptypeExRecord(CliptypeExTable cliptypeExTable)
        //{
        //    AnimatorStateInfo animeStateInfo = animator.GetCurrentAnimatorStateInfo(0);

        //    CliptypeIndex aclipType = (CliptypeIndex)((StateExRecord)StateExTable.Instance.index_to_exRecord[StateExTable.Instance.hash_to_index[animeStateInfo.fullPathHash]]).Cliptype;

        //    if (cliptypeExTable.index_to_exRecord.ContainsKey((int)aclipType))
        //    {
        //        return cliptypeExTable.index_to_exRecord[(int)aclipType];
        //    }

        //    throw new UnityException("aclipType = [" + aclipType + "]に対応するアニメーション・クリップのレコードが無いぜ☆");
        //}


        /// <summary>
        /// 相手に向かって進んでいるか、相手から離れているか、こっちからは動いていないかを判定する。
        /// </summary>
        /// <param name="leverX"></param>
        /// <returns></returns>
        public FacingOpponentMoveFwBkSt GetFacingOpponentMoveFwBkSt(float leverX)
        {
            if (0.0f == leverX)
            {
                return(FacingOpponentMoveFwBkSt.Stay);
            }

            var player = PlayerIndexes.FromArrayIndex(this.playerIndex);

            if (Mathf.Sign(ThisSceneDto.PlayerToTransform[CommonScript.ReverseTeban(player)].position.x - transform.position.x)
                ==
                Mathf.Sign(leverX)
                )
            {
                return(FacingOpponentMoveFwBkSt.Forward);
            }
            return(FacingOpponentMoveFwBkSt.Back);
        }
Пример #10
0
        public void Jump1()
        {
            //ebug.Log("Jump1");
            float velocityX = Rigidbody2D.velocity.x;

            var player = PlayerIndexes.FromArrayIndex(this.playerIndex);

            //左キー: -1、右キー: 1
            float leverX = Input.GetAxisRaw(InputNames.Dictionary[new InputIndex(player, ButtonIndex.Horizontal)]);

            if (leverX != 0)//左か右を入力したら
            {
                //ebug.Log("lever x = " + x.ToString());

                //入力方向へ移動
                velocityX = speedX;
            }

            Rigidbody2D.velocity = new Vector2(velocityX, speedY);// 上方向へ移動
        }
Пример #11
0
        void OnTriggerEnter2D(Collider2D col)
        {
            // 相手キャラクター に当たったら、この弾を消すぜ☆
            if (col.gameObject.tag == ThisSceneDto.PlayerToTag[opponent])
            {
                if (mainCameraScript != null)// なぜかヌルになっていることがあるぜ☆(^~^)
                {
                    var opponentKey = PlayerIndexes.FromArrayIndex(opponent);

                    // 爆発の粒子を作るぜ☆
                    TakoyakiParticleScript.Add(this.transform.position.x, this.transform.position.y);

                    // HPメーター
                    {
                        float damage;
                        switch (opponentKey)
                        {
                        case PlayerIndex.Player1: damage = -50.0f; break;     // 1プレイヤーにダメージの場合マイナス☆

                        case PlayerIndex.Player2: damage = 50.0f; break;

                        default: Debug.LogError("Bullet / HP meter / opponent"); damage = 0.0f; break;
                        }

                        // コンピューターが連射をしていると、mainCameraScript がヌルになっていることがあるようだ。
                        mainCameraScript.OffsetBar(damage);
                    }

                    // 手番
                    {
                        // 攻撃を受けた方の手番に変わるぜ☆(^▽^)
                        mainCameraScript.SetTeban(opponentKey);
                    }

                    // この弾を消すぜ☆
                    Destroy(gameObject);
                }
            }
        }
Пример #12
0
        // Update is called once per frame
        void Update()
        {
            var player = PlayerIndexes.FromArrayIndex(this.playerIndex);

            // 現在のアニメーター・ステートに紐づいたデータ
            AcStateRecordable astateRecord = AControl.Instance.GetCurrentAcStateRecord(animator);

            #region 入力受付と途中参加
            InputStateDto input = ApplicationDto.ReadInput(player);

            // 人間の途中参加受付
            if (
                CommonScript.computerFlags[player] && // コンピュータープレイヤーの場合
                (
                    // レバーはコンピューターもいじっているので、区別できない。
                    // 0 != leverX ||
                    // 0 != leverY ||
                    0 != input.LeverX ||
                    0 != input.LeverY ||
                    input.Lp.Pressing ||
                    input.Mp.Pressing ||
                    input.Hp.Pressing ||
                    input.Lk.Pressing ||
                    input.Mk.Pressing ||
                    input.Hk.Pressing ||
                    input.Pause.Pressing ||
                    input.CancelMenu.Pressing
                ))
            {
                Debug.Log("途中参加 " + player + " プレイヤー" + " leverX = " + input.LeverX + " leverY = " + input.LeverY);
                // コンピューター・プレイヤー側のゲームパッドで、何かボタンを押したら、人間の参入。
                CommonScript.computerFlags[player] = false;
                // FIXME: 硬直時間を入れたい。
                return;
            }

            if (CommonScript.computerFlags[player])
            {
                input.LeverX              = Random.Range(-1.0f, 1.0f);
                input.Lp.Pressing         = false;
                input.Mp.Pressing         = false;
                input.Hp.Pressing         = false;
                input.Lk.Pressing         = false;
                input.Mk.Pressing         = false;
                input.Hk.Pressing         = false;
                input.Pause.Pressing      = false;
                input.CancelMenu.Pressing = false;
            }
            else
            {
                input.LeverX = Input.GetAxisRaw(InputNames.Dictionary[new InputIndex(player, ButtonIndex.Horizontal)]);
            }
            #endregion

            if (AControl.Instance.StateHash_to_record[Animator.StringToHash(Select_Cursor_AbstractAControl.BASELAYER_STAY)].Name == astateRecord.Name)
            {
                //カーソル移動中でなければ。

                if (CommonScript.computerFlags[player])// コンピュータープレイヤーの場合
                {
                    if (CameraBehaviour.READY_TIME_LENGTH < mainCameraScript.ReadyingTime)
                    {
                        input.Lp.Pressing = (0.5 < Random.Range(0.0f, 1.0f)); // たまにパンチ・キーを押して決定する。
                    }
                }

                if (
                    input.Lp.Pressing ||
                    input.Mp.Pressing ||
                    input.Hp.Pressing ||
                    input.Lk.Pressing ||
                    input.Mk.Pressing ||
                    input.Hk.Pressing ||
                    input.Pause.Pressing
                    )
                {
                    // 何かボタンを押したら、キャラクター選択。
                    animator.SetTrigger(ThisSceneDto.TriggerSelect);
                }
                else if (input.LeverX != 0.0f)//左か右を入力したら
                {
                    //Debug.Log("slide lever x = " + leverX.ToString());
                    if (input.LeverX < 0.0f)
                    {
                        cursorColumn--;
                        if (cursorColumn < 0)
                        {
                            cursorColumn = 2;
                        }
                    }
                    else
                    {
                        cursorColumn++;
                        if (2 < cursorColumn)
                        {
                            cursorColumn = 0;
                        }
                    }

                    //Debug.Log("slide pos = " + cursorColumn[iPlayerIndex]);

                    animator.SetTrigger(ThisSceneDto.TriggerMove);

                    ChangeCharacter();

                    //入力方向へ移動
                    //rigidbody2Ds[iPlayerIndex].velocity = new Vector2(leverX * cursorSpeed, rigidbody2Ds[iPlayerIndex].velocity.y);
                    SlideIn();
                }
                else // ボタン押下も、レバー左右入力もしていなかったら
                {
                    //横移動の速度を0にしてピタッと止まるようにする
                    myRigidbody2D.velocity = new Vector2(0, myRigidbody2D.velocity.y);
                }
            }
            else if (AControl.Instance.StateHash_to_record[Animator.StringToHash(Select_Cursor_AbstractAControl.BASELAYER_MOVE)].Name == astateRecord.Name)
            {
            }
            else if (AControl.Instance.StateHash_to_record[Animator.StringToHash(Select_Cursor_AbstractAControl.BASELAYER_READY)].Name == astateRecord.Name)
            {
                // キャラクター選択済みのとき

                if (
                    !CommonScript.computerFlags[player] // 人間プレイヤーの場合
                    &&
                    (
                        input.Lk.Pressing ||
                        input.Mk.Pressing ||
                        input.Hk.Pressing ||
                        input.CancelMenu.Pressing
                    ))
                {
                    // キック・ボタンを押したら、キャンセル☆
                    animator.SetTrigger(ThisSceneDto.TriggerStay);
                }
            }
        }
Пример #13
0
        void Start()
        {
            text = GameObject.Find(ThisSceneDto.GameObjText).GetComponent <Text>();

            // プレイヤー1、2の顔
            {
                player_to_face = new Image[]
                {
                    GameObject.Find(ThisSceneDto.GameObjectPaths[PlayerIndex.Player1][(int)GameobjectIndex.Face]).GetComponent <Image>(),
                    GameObject.Find(ThisSceneDto.GameObjectPaths[PlayerIndex.Player2][(int)GameobjectIndex.Face]).GetComponent <Image>()
                };

                foreach (var player in PlayerIndexes.All)
                {
                    int      character = (int)CommonScript.UseCharacters[player];
                    Sprite[] sprites   = Resources.LoadAll <Sprite>(CommonScript.CharacterAndSlice_to_faceSprites[character, (int)ResultFaceSpriteIndex.All]);
                    string   slice;
                    switch (CommonScript.Result)
                    {
                    case Result.Player1_Win:
                        switch (player)
                        {
                        case PlayerIndex.Player1: slice = CommonScript.CharacterAndSlice_to_faceSprites[character, (int)ResultFaceSpriteIndex.Win]; break;

                        case PlayerIndex.Player2: slice = CommonScript.CharacterAndSlice_to_faceSprites[character, (int)ResultFaceSpriteIndex.Lose]; break;

                        default: Debug.LogError("未定義のプレイヤー☆"); slice = ""; break;
                        }
                        break;

                    case Result.Player2_Win:
                        switch (player)
                        {
                        case PlayerIndex.Player1: slice = CommonScript.CharacterAndSlice_to_faceSprites[character, (int)ResultFaceSpriteIndex.Lose]; break;

                        case PlayerIndex.Player2: slice = CommonScript.CharacterAndSlice_to_faceSprites[character, (int)ResultFaceSpriteIndex.Win]; break;

                        default: Debug.LogError("未定義のプレイヤー☆"); slice = ""; break;
                        }
                        break;

                    //case Result.Double_KnockOut:
                    //    break;
                    default:
                        // 開発中画面などで☆
                        slice = CommonScript.CharacterAndSlice_to_faceSprites[character, (int)ResultFaceSpriteIndex.Win];
                        break;
                    }
                    player_to_face[PlayerIndexes.ToArrayIndex(player)].sprite = System.Array.Find <Sprite>(sprites, (sprite) => sprite.name.Equals(slice));
                }
            }

            switch (CommonScript.Result)
            {
            case Result.Player1_Win:
                text.text = ThisSceneDto.WinMessageByCharacter[(int)CommonScript.UseCharacters[PlayerIndex.Player1]];
                break;

            case Result.Player2_Win:
                text.text = ThisSceneDto.WinMessageByCharacter[(int)CommonScript.UseCharacters[PlayerIndex.Player2]];
                break;

            //case Result.Double_KnockOut:
            //    text.text = "ダブルKO!\n";
            //    break;
            default:
                text.text = "結果は\nどうなったんだぜ☆(^~^)?";
                break;
            }
        }
Пример #14
0
        //void OnCollisionEnter2D(Collider2D col)
        //{
        //    Debug.Log("物体だ☆! col.tag = " + col.tag);
        //}
        /// <summary>
        /// BoxCollider2D(等のPhysics2D), Rigidbody2D の2つをアタッチしているものと接触したとき。
        /// </summary>
        /// <param name="col"></param>
        void OnTriggerEnter2D(Collider2D col)
        {
            #region 当たり判定
            if (col.tag == playerScript.OpponentHitboxTag)// 相手の 攻撃当たり判定くん が重なった時
            {
                var player = PlayerIndexes.FromArrayIndex(this.playerIndex);

                // ブロックしているかどうか判定☆
                //CommonInput.PlayerInput input = CommonInput.player_to_input[playerIndex];
                InputStateDto input = ApplicationDto.ReadInput(player);
                if (FacingOpponentMoveFwBkSt.Back == playerScript.GetFacingOpponentMoveFwBkSt(input.LeverX))
                {
                    //if (PlayerIndex.Player1==player)
                    //{
                    //    Debug.Log("ブロック☆! col.tag = " + col.tag + " input.leverX = " + input.leverX + " Time.deltaTime = " + Time.deltaTime);
                    //}
                    audioSources[1].PlayOneShot(audioSources[1].clip);// 効果音を鳴らすぜ☆
                    playerScript.Animator.SetTrigger(ThisSceneDto.TriggerBlock);
                }
                else
                {
                    //if (PlayerIndex.Player1 == player)
                    //{
                    //    Debug.Log("痛っ☆! col.tag = " + col.tag + " input.leverX = " + input.leverX + " Time.deltaTime = " + Time.deltaTime);
                    //}
                    playerScript.DamageHitCount++;                     // 攻撃を受けた回数。

                    audioSources[0].PlayOneShot(audioSources[0].clip); // 効果音を鳴らすぜ☆

                    // 爆発の粒子を作るぜ☆
                    TakoyakiParticleScript.Add(transform.position.x, transform.position.y);

                    // HPメーター
                    {
                        float damage = playerScript.MainCameraScript.PublicPlayerDTOs[playerScript.Opponent].AttackPower;

                        float value = damage * (player == PlayerIndex.Player1 ? -1 : 1);
                        playerScript.MainCameraScript.OffsetBar(value);

                        if (10 <= playerScript.DamageHitCount)
                        {
                            // ダウン・アニメーションの開始
                            playerScript.Pull_Down();
                        }
                        else if (100.0f <= damage)
                        {
                            // ダメージ・アニメーションの開始
                            playerScript.Pull_DamageH();
                        }
                        else if (50.0f <= damage)
                        {
                            // ダメージ・アニメーションの開始
                            playerScript.Pull_DamageM();
                        }
                        else
                        {
                            // ダメージ・アニメーションの開始
                            playerScript.Pull_DamageL();
                        }
                    }

                    // 手番
                    {
                        // 攻撃を受けた方の手番に変わるぜ☆(^▽^)
                        playerScript.MainCameraScript.SetTeban(playerScript.Opponent);
                    }
                }
            }
            else
            {
                //Debug.Log("相手の攻撃じゃないものに当たった☆! col.tag = " + col.tag);
            }
            #endregion
        }
Пример #15
0
        void Update()
        {
            var player = PlayerIndexes.FromArrayIndex(this.playerIndex);

            //if (PlayerIndex.Player1 == player)
            //{
            //    //ebug.Log("Update Time.deltaTime = " + Time.deltaTime);
            //}

            // 現在のアニメーター・ステートに紐づいたデータ
            AcState astateRecord = (AcState)AControl.Instance.GetCurrentAcStateRecord(animator);

            #region 入力受付
            InputStateDto input = ApplicationDto.ReadInput(player);

            if (isComputer)
            {
                if (input.Lp.Down || input.Mp.Down || input.Hp.Down || input.Lk.Down || input.Mk.Down || input.Hk.Down || input.Pause.Down)
                {
                    // 人間プレイヤーの乱入☆ 次のフレームから☆
                    isComputer   = false;
                    input.LeverX = 0;
                    input.LeverY = 0;
                }
                else
                {
                    // コンピューター・プレイヤーの場合。
                    input.LeverX = Random.Range(-1.0f, 1.0f);
                    input.LeverY = Random.Range(-1.0f, 1.0f);
                    if (-0.980f < input.LeverX && input.LeverX < 0.980f)
                    {
                        // きょろきょろするので落ち着かせるぜ☆(^~^)
                        input.LeverX = 0.0f;
                    }

                    if (-0.995f < input.LeverY && input.LeverY < 0.995f)
                    {
                        // ジャンプばっかりするので落ち着かせるぜ☆(^~^)
                        input.LeverY = 0.0f;
                    }

                    if (input.Lp.Pressing)
                    {
                        // 押しっぱなしなら、いつか放す☆(^~^)
                        input.Lp.Up = (0.900f < Random.Range(0.0f, 1.0f));
                    }
                    else
                    {
                        // 押してないなら、いつか押す☆(^~^)
                        input.Lp.Up   = false;
                        input.Lp.Down = (0.900f < Random.Range(0.0f, 1.0f));
                    }

                    if (input.Mp.Pressing)
                    {
                        input.Mp.Up = (0.990f < Random.Range(0.0f, 1.0f));
                    }
                    else
                    {
                        input.Mp.Up   = false;
                        input.Mp.Down = (0.990f < Random.Range(0.0f, 1.0f));
                    }

                    if (input.Hp.Pressing)
                    {
                        input.Hp.Up = (0.995f < Random.Range(0.0f, 1.0f));
                    }
                    else
                    {
                        input.Hp.Up   = false;
                        input.Hp.Down = (0.995f < Random.Range(0.0f, 1.0f));
                    }

                    if (input.Lk.Pressing)
                    {
                        input.Lk.Up = (0.900f < Random.Range(0.0f, 1.0f));
                    }
                    else
                    {
                        input.Lk.Up   = false;
                        input.Lk.Down = (0.900f < Random.Range(0.0f, 1.0f));
                    }

                    if (input.Mk.Pressing)
                    {
                        input.Mk.Up = (0.990f < Random.Range(0.0f, 1.0f));
                    }
                    else
                    {
                        input.Mk.Up   = false;
                        input.Mk.Down = (0.990f < Random.Range(0.0f, 1.0f));
                    }

                    if (input.Hk.Pressing)
                    {
                        input.Hk.Up = (0.995f < Random.Range(0.0f, 1.0f));
                    }
                    else
                    {
                        input.Hk.Up   = false;
                        input.Hk.Down = (0.995f < Random.Range(0.0f, 1.0f));
                    }
                    //buttonUpPA = (0.999f < Random.Range(0.0f, 1.0f));
                    //buttonDownPA = (0.999f < Random.Range(0.0f, 1.0f));
                }
            }
            #endregion

            FacingOpponentMoveFwBkSt facingOpponentMoveFwBkSt = GetFacingOpponentMoveFwBkSt(input.LeverX);

            if (astateRecord.Tags.Contains((int)Animator.StringToHash(AControl.TAG_BLOCK)))
            {
                // ブロック中
                if (FacingOpponentMoveFwBkSt.Back != facingOpponentMoveFwBkSt)
                {
                    // バックを解除している場合。
                    animator.SetTrigger(ThisSceneDto.TriggerDeblock);
                }
            }

            #region ジャンプ
            {
                // キャラクターの下半身に、接地判定用の垂直線を引く
                // transform.up が -1 のとき、方眼紙の1マス分ぐらい下に相当?
                isGrounded = Physics2D.Linecast(
                    transform.position + transform.up * 0,    // スプライトの中央
                    transform.position - transform.up * 1.1f, // 足元を少しはみ出すぐらい
                    groundLayer                               // Linecastが判定するレイヤー // LayerMask.GetMask("Water")//
                    );
                //if (PlayerIndex.Player1 == player)
                //{
                //    //ebug.Log("B playerIndex = " + playerIndex + " isGrounded = " + isGrounded + " transform.position.y = " + transform.position.y + " Rigidbody2D.velocity.y = " + Rigidbody2D.velocity.y);
                //}

                //Animatorへパラメーターを送る
                animator.SetFloat(ThisSceneDto.FloatVelY, Rigidbody2D.velocity.y); // y方向へかかる速度単位,上へいくとプラス、下へいくとマイナス
                //ebug.Log("Jumping velY="+animator.GetFloat(SceneCommon.FLOAT_VEL_Y));
                animator.SetBool(ThisSceneDto.BoolIsGrounded, isGrounded);
            }
            #endregion

            #region 弾を撃つ
            // 弾を撃つぜ☆
            if (
                (3 == animator.GetInteger(ThisSceneDto.IntegerLeverXNeutral) % (30)) // レバーを放して、タイミングよく攻撃ボタンを押したとき
                &&
                (
                    input.Lp.Down ||
                    input.Mp.Down ||
                    input.Hp.Down ||
                    input.Lk.Down ||
                    input.Mk.Down ||
                    input.Hk.Down
                )
                )
            {
                float startY;

                if (0 < input.LeverY)// 上段だぜ☆
                {
                    startY = 1.2f;
                }
                else if (0 == input.LeverY)// 中段だぜ☆
                {
                    startY = 0.6f;
                }
                else // 下段だぜ☆
                {
                    startY = 0.0f;
                }

                // 弾の作成☆
                GameObject     newBullet = Instantiate(bullet, transform.position + new Vector3(0f, startY, 0f), transform.rotation);
                SpriteRenderer newBulletSpriteRenderer = newBullet.GetComponent <SpriteRenderer>();

                // 弾の画像を差し替えたいぜ☆(^~^)
                {
                    int      r       = Random.Range(0, 14);
                    Sprite[] sprites = Resources.LoadAll <Sprite>("Sprites/Bullet0");
                    Sprite   sprite2;
                    switch (r)
                    {
                    case 0: sprite2 = System.Array.Find <Sprite>(sprites, (sprite) => sprite.name.Equals("Bullet0_0")); break;   //歩

                    case 1: sprite2 = System.Array.Find <Sprite>(sprites, (sprite) => sprite.name.Equals("Bullet0_1")); break;   //香

                    case 2: sprite2 = System.Array.Find <Sprite>(sprites, (sprite) => sprite.name.Equals("Bullet0_2")); break;   //桂

                    case 3: sprite2 = System.Array.Find <Sprite>(sprites, (sprite) => sprite.name.Equals("Bullet0_3")); break;   //銀

                    case 4: sprite2 = System.Array.Find <Sprite>(sprites, (sprite) => sprite.name.Equals("Bullet0_4")); break;   //金

                    case 5: sprite2 = System.Array.Find <Sprite>(sprites, (sprite) => sprite.name.Equals("Bullet0_5")); break;   //角

                    case 6: sprite2 = System.Array.Find <Sprite>(sprites, (sprite) => sprite.name.Equals("Bullet0_6")); break;   //飛

                    case 7: sprite2 = System.Array.Find <Sprite>(sprites, (sprite) => sprite.name.Equals("Bullet0_7")); break;   //玉

                    case 8: sprite2 = System.Array.Find <Sprite>(sprites, (sprite) => sprite.name.Equals("Bullet0_8")); break;   //と

                    case 9: sprite2 = System.Array.Find <Sprite>(sprites, (sprite) => sprite.name.Equals("Bullet0_9")); break;   //杏

                    case 10: sprite2 = System.Array.Find <Sprite>(sprites, (sprite) => sprite.name.Equals("Bullet0_10")); break; //圭

                    case 11: sprite2 = System.Array.Find <Sprite>(sprites, (sprite) => sprite.name.Equals("Bullet0_11")); break; //全

                    case 12: sprite2 = System.Array.Find <Sprite>(sprites, (sprite) => sprite.name.Equals("Bullet0_12")); break; //馬

                    default: sprite2 = System.Array.Find <Sprite>(sprites, (sprite) => sprite.name.Equals("Bullet0_13")); break; //竜
                    }
                    newBulletSpriteRenderer.sprite = sprite2;
                }
            }
            #endregion

            #region レバーの押下時間の更新
            // レバー・ニュートラル時間と、レバー・プレッシング時間は、8フレームほど重複する部分がある。
            if (input.LeverX != 0)//左か右を入力したら
            {
                animator.SetInteger(ThisSceneDto.IntegerLeverXPressing, animator.GetInteger(ThisSceneDto.IntegerLeverXPressing) + 1);
                animator.SetInteger(ThisSceneDto.IntegerLeverXNeutral, 0);
                animator.SetInteger(ThisSceneDto.IntegerLeverXIdol, 0);
            }
            else //左も右も入力していなかったら
            {
                // 感覚的に、左から右に隙間なく切り替えたと思っていても、
                // 入力装置的には、左から右(その逆も)に切り替える瞬間、どちらも押していない瞬間が発生する。
                if (8 < animator.GetInteger(ThisSceneDto.IntegerLeverXIdol))// レバーを放した 数フレーム目から、レバーが離れた判定をすることにする。
                {
                    animator.SetInteger(ThisSceneDto.IntegerLeverXPressing, 0);
                    animator.SetInteger(ThisSceneDto.IntegerLeverXNeutral, animator.GetInteger(ThisSceneDto.IntegerLeverXNeutral) + 1);
                }
                else
                {
                    animator.SetInteger(ThisSceneDto.IntegerLeverXIdol, animator.GetInteger(ThisSceneDto.IntegerLeverXIdol) + 1);
                }
            }

            if (0 != input.LeverY)// 上か下キーを入力していたら
            {
                animator.SetInteger(ThisSceneDto.IntegerLeverYPressing, animator.GetInteger(ThisSceneDto.IntegerLeverYPressing) + 1);
                animator.SetInteger(ThisSceneDto.IntegerLeverYNeutral, 0);
                animator.SetInteger(ThisSceneDto.IntegerLeverYIdol, 0);
            }
            else // 下も上も入力していなかったら
            {
                // 感覚的に、左から右に隙間なく切り替えたと思っていても、
                // 入力装置的には、下から上(その逆も)に切り替える瞬間、どちらも押していない瞬間が発生する。
                if (8 < animator.GetInteger(ThisSceneDto.IntegerLeverYIdol))// レバーを放した 数フレーム目から、レバーが離れた判定をすることにする。
                {
                    animator.SetInteger(ThisSceneDto.IntegerLeverYPressing, 0);
                    animator.SetInteger(ThisSceneDto.IntegerLeverYNeutral, animator.GetInteger(ThisSceneDto.IntegerLeverYNeutral) + 1);
                }
                else
                {
                    animator.SetInteger(ThisSceneDto.IntegerLeverYIdol, animator.GetInteger(ThisSceneDto.IntegerLeverYIdol) + 1);
                }
            }
            #endregion

            #region レバー操作によるアクション
            //if (!anim.GetBool(CommonScript.BOOL_JMOVE0))//ジャンプ時の屈伸中ではないなら
            //{
            if (input.LeverX != 0)//左か右を入力したら
            {
                if (!astateRecord.Tags.Contains(Animator.StringToHash(AControl.TAG_BUSYX)))
                {
                    //入力方向へ移動
                    Rigidbody2D.velocity = new Vector2(Mathf.Sign(input.LeverX) * speedX, Rigidbody2D.velocity.y);
                }

                DoFacingOpponent(GetFacingOfOpponentLR());
                //ebug.Log("さあ、どっちだ☆ input.leverX = " + input.leverX + " facingOpponentMoveFwBkSt = " + facingOpponentMoveFwBkSt + " Time.deltaTime = " + Time.deltaTime);

                if (FacingOpponentMoveFwBkSt.Forward == facingOpponentMoveFwBkSt)// 相手に向かってレバーを倒したとき
                {
                    //if (PlayerIndex.Player1 == player)
                    //{
                    //    //ebug.Log("相手に向かっていくぜ☆ input.leverX = " + input.leverX);
                    //}

                    Pull_Forward();
                    //if (isGrounded)// 接地していれば
                    //{
                    //}
                    //if ((int)ActioningIndex.Dash != anim.GetInteger(CommonScript.INTEGER_ACTIONING))
                    //{
                    //    // ダッシュ・アニメーションの開始
                    //    //if (PlayerIndex.Player1 == player)
                    //    //{
                    //    //    //ebug.Log("Rigidbody2D.velocity.x = " + Rigidbody2D.velocity.x + " ダッシュ!");
                    //    //}
                    //}
                    //else
                    //{
                    //    // 既にダッシュ中なら何もしない
                    //}
                }
                else if (FacingOpponentMoveFwBkSt.Back == facingOpponentMoveFwBkSt)// 相手と反対の方向にレバーを倒したとき(バックステップ)
                {
                    //if (PlayerIndex.Player1 == player)
                    //{
                    //    //ebug.Log("相手の反対側に向かっていくぜ☆ input.leverX = " + input.leverX);
                    //}

                    Pull_Back();
                }
                else // レバーを倒していない時(ここにはこない?)
                {
                    //if (PlayerIndex.Player1 == player)
                    //{
                    //    //ebug.Log("止まっているぜ☆ input.leverX = " + input.leverX);
                    //}
                }
            }
            else// 左も右も入力していなかったら
            {
                if (isGrounded)// 接地していれば
                {
                    // 横移動の速度を0にしてピタッと止まるようにする
                    Rigidbody2D.velocity = new Vector2(0, Rigidbody2D.velocity.y);
                }


                // 感覚的に、左から右に隙間なく切り替えたと思っていても、
                // 入力装置的には、左から右(その逆も)に切り替える瞬間、どちらも押していない瞬間が発生する。
                if (8 < animator.GetInteger(ThisSceneDto.IntegerLeverXNeutral))// レバーを放した 数フレーム目から、レバーが離れた判定をすることにする。
                {
                    //if (PlayerIndex.Player1 == player)
                    //{
                    //    //ebug.Log("Rigidbody2D.velocity.x = " + Rigidbody2D.velocity.x + " ストップ!");
                    //}

                    if (isGrounded)// 接地していれば
                    {
                        animator.SetInteger(ThisSceneDto.IntegerActioning, (int)TilesetfileType.Stand);
                    }
                }
            }

            //ebug.Log("leverY = "+ leverY + " player_to_rigidbody2D[" + iPlayer  + "].velocity = " + player_to_rigidbody2D[iPlayer].velocity);

            if (0 != input.LeverY)// 上か下キーを入力していたら
            {
                if (!astateRecord.Tags.Contains(Animator.StringToHash(AControl.TAG_BUSYY)))
                {
                    if (0 < input.LeverY) // 上キーを入力したら
                    {
                        if (isGrounded)   // 接地していれば
                        {
                            // ジャンプするぜ☆
                            Pull_Jump();
                        }
                    }
                    else if (input.LeverY < 0) // 下キーを入力したら
                    {
                        if (isGrounded)        // 接地していれば
                        {
                            // 屈むぜ☆
                            Pull_Crouch();
                        }
                    }
                }
            }
            else // 下も上も入力していなかったら
            {
            }
            //}
            #endregion

            #region 行動
            //if (buttonDownHP && buttonDownHK)
            //{
            //    //ebug.Log("投了☆!");
            //    Resign();
            //}
            //else
            if (input.Lp.Down)
            {
                //ebug.Log("button BUTTON_03_P1_LP");
                Pull_LightPunch();
            }
            else if (input.Mp.Down)
            {
                //ebug.Log("button BUTTON_04_P1_MP");
                Pull_MediumPunch();
            }
            else if (input.Hp.Down)
            {
                //ebug.Log("button BUTTON_05_P1_HP");
                Pull_HardPunch();
            }
            else if (input.Lk.Down)
            {
                //ebug.Log("button BUTTON_06_P1_LK");
                Pull_LightKick();
            }
            else if (input.Mk.Down)
            {
                //ebug.Log("button BUTTON_07_P1_MK");
                Pull_MediumKick();
            }
            else if (input.Hk.Down)
            {
                //ebug.Log("button BUTTON_08_P1_HK");
                Pull_HardKick();
            }
            else if (input.Pause.Down)
            {
                //ebug.Log("button BUTTON_09_P1_PA");
            }
            #endregion

            if (ThisSceneDto.ReadyTimeLength < mainCameraScript.ReadyingTime)
            {
                // 当たり判定くん
                Motor.Instance.Update(animator, AControl.Instance, player, transform, hitboxsSpriteRenderer, weakboxCollider2D);
            }
        }