/// <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); }
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; }
// 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); } }
void Pull_HardKick() { var player = PlayerIndexes.FromArrayIndex(this.playerIndex); mainCameraScript.PublicPlayerDTOs[player].AttackPower = 100.0f; // アニメーションの開始 animator.SetTrigger(ThisSceneDto.TriggerAtkHk); }
void Pull_MediumPunch() { var player = PlayerIndexes.FromArrayIndex(this.playerIndex); mainCameraScript.PublicPlayerDTOs[player].AttackPower = 50.0f; // アニメーションの開始 animator.SetTrigger(ThisSceneDto.TriggerAtkMp); }
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; }
///// <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); }
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);// 上方向へ移動 }
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); } } }
// 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); } } }
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; } }
//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 }
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); } }