/// <summary> /// 入力待ち処理 /// </summary> void WaitForInput() { //入力待ちプレイヤーを取得 var players = data.Where(it => it.state == State.Wait).ToArray(); foreach (var it in players) { if (it.id == PlayerManager.NOT_ENTRY) { continue; } int index = DataBase.GetControllerID(it.id) - 1; GamePad.Index gamePadIndex = (GamePad.Index)(index + 1); var input = MyInputManager.GetController(gamePadIndex); //入力終了の瞬間 if (input.START) { data[index].state = State.End; ResultTextManager.Instance.StartCloseAndOpenVertical(index); ResultTextManager.Instance.SetFinishedText(index); //効果音 SoundManager.Instance.PlayOnSE("Inputed"); } } }
/// <summary> /// エントリー終了の操作 /// </summary> private void EFinishInput() { //登録し終わったプレイヤーを取得 var player = data.Where(it => it.registState == RegistState.End).ToArray(); //参加プレイヤー全員が準備を完了していなければ処理しない if (!player.All(it => it.registState == RegistState.End)) { return; } foreach (var it in player) { var input = MyInputManager.GetController(it.index); //キャラ選択に戻る if (input.B) { int index = (int)it.index - 1; it.registState = RegistState.Select; int modelNo = DataBase.GetPrefabID(it.id); EntryTextManager.Instance.StartCloseAndOpenVertical(index); EntryTextManager.Instance.SetSelectCharacterText(index); EntryTextManager.Instance.SetCharacterArrowActive(index, true); EntryTextManager.Instance.StartArrowCursol(index); ViewerManager.Instance.Create(it.index, modelNo); ViewerManager.Instance.SetRotationFlags(index, true); continue; } } }
/// <summary> /// 遊ぶのを止める /// </summary> private void PlayingCancel() { //非参加プレイヤーの取得 var player = data.Where(it => it.registState == RegistState.Entry).ToArray(); bool isInput = false; //Bボタンが押されているか判定 foreach (var it in player) { var input = MyInputManager.GetController(it.index); if (input.B_Hold) { isInput = true; break; } } //非参加プレイヤーの誰かがBボタンを長押ししている if (isInput) { RiseReturnValue(); } //誰も長押ししていない else { FallReturnValue(); } //蓄積値をUIのFill値としてセット ReturnTitleUI.Instance.SetFillAmountValue(returnValue); }
/// <summary> /// 参加プレイヤーのエントリー /// </summary> private void Entry() { //非参加プレイヤーの取得 var player = data.Where(it => it.registState == RegistState.Entry).ToArray(); //非参加プレイヤーに対して入力を受け付ける foreach (var it in player) { //入力 var input = MyInputManager.GetController(it.index); //プレイヤー番号 int index = (int)it.index - 1; //登録時処理 if (input.START) { //テキスト変更 EntryTextManager.Instance.StartCloseAndOpenVertical(index); EntryTextManager.Instance.SetSelectCharacterText(index); //初期化 int id_i = (int)data[index].index * DataBase.ID_INDEX; //コントローラー番号 int id_m = (int)DataBase.MODEL.UTC_S * DataBase.ID_PREFAB; //モデル番号(初期はUTC_S) int id_c = (int)data[index].index * DataBase.ID_COLOR - 1; //色番号(初期はコントローラー番号に応じた色が設定) //ID決定 it.id = id_i + id_m + id_c; //矢印 EntryTextManager.Instance.SetCharacterArrowActive(index, true); EntryTextManager.Instance.StartArrowCursol(index); //一番最初のモデルビュー(UTC_S) int iModel = (int)DataBase.MODEL.UTC_S; ViewerManager.Instance.Create(it.index, iModel); //登録状況の更新 it.registState = RegistState.Select; //効果音 int channel = index + 1;//AudioSourceのインデックスを算出 SoundManager.Instance.Play("entry", channel); } } }
/// <summary> /// 更新 /// </summary> public void PlayerUpdate() { //コントローラー gamePad = MyInputManager.GetController(useControllerIndex); //攻撃 //Attack(); AttackTrgOn(); AttackUpdate(); //回転 Turn(); //移動 Move(); }
/// <summary> /// 登録のキャンセル処理 /// </summary> /// <param name="index"></param> /// <param name="data"></param> private void EntryCancel(GamePad.Index index, EntryData data) { var input = MyInputManager.GetController(index); //参加登録をキャンセル if (input.B) { int textIndex = (int)index - 1; data.registState = RegistState.Entry; EntryTextManager.Instance.StartCloseAndOpenVertical(textIndex); EntryTextManager.Instance.SetWaitText(textIndex); ViewerManager.Instance.Destroy(index); EntryTextManager.Instance.SetCharacterName(textIndex, PlayerManager.NOT_ENTRY); EntryTextManager.Instance.SetCharacterArrowActive(textIndex, false); //効果音 int chanel = (int)index; SoundManager.Instance.Play("entryCancel", chanel); } }
/// <summary> /// 使用するコントローラーの設定 /// </summary> /// <param name="index"></param> public void SetControllerIndex(GamePadInput.GamePad.Index index) { useControllerIndex = index; gamePad = MyInputManager.GetController(useControllerIndex); }
/// <summary> /// 初期化 /// </summary> public void Initialize() { // 移動可能フラグ isMove = true; // 回転可能フラグ isRotation = true; // 攻撃可能フラグ isAttack = false; // 無敵フラグ isInvisible = false; // 初期位置の記憶 resetPos = modelObject.transform.position; // ポイント point = 0; // コントローラーの設定 gamePad = MyInputManager.GetController(useControllerIndex); // アウトラインマテリアルの設定 SetOutlineColor(); // 蹴り KickEvent inst = modelObject.AddComponent <KickEvent>(); inst.Init(animator); // キック時の攻撃トリガーを入れる関数 Action kickStartFunc = () => { // 攻撃のトリガー isAttack = true; #region DEBUG #if UNITY_EDITOR // デバッグ用 isDrawAttackTrigger = true; #endif #endregion }; inst.SetKickStartFunc(kickStartFunc); // キック時の攻撃トリガーを切る関数 Action kickEndFunc = () => { AttackTrgOff(); }; inst.SetKickEndFunc(kickEndFunc); // 攻撃時に発生するボイス Action kickVoiceFunc = () => { KickVoice(); }; inst.SetKickVoiceFunc(kickVoiceFunc); // 注視処理 Vector3 targetPos = Camera.main.transform.position; lookAtTargetIK.SetTargetPosition(targetPos); lookAtTargetIK.SetLookAtWeight(1.0f, 0.0f, 0.45f, 0.0f, 0.5f); }
/// <summary> /// キャラクター選択 /// </summary> /// <param name="index">コントローラー番号</param> /// <param name="data">エントリーデータ</param> private void CharacterChoice(GamePad.Index index, EntryData data) { var input = MyInputManager.GetController(index); //IDからコントローラーインデックス取得 int id_i = DataBase.GetControllerID(data.id); //IDから選択モデル取得 int id_m = DataBase.GetPrefabID(data.id); int before = DataBase.GetPrefabID(data.id);//比較用変更前のモデル番号 //左 if (!data.isInput && input.LStick.x < 0) { id_m--; if ((DataBase.MODEL)id_m < DataBase.MODEL.UTC_S) { id_m = (int)DataBase.MODEL.YUKO_W; } //連続入力防止用フラグを立てる data.isInput = true; //キーフラグリセット用コルーチンの開始 IEnumerator coroutine = ResetKeyFlags(data); CoroutineManager.Instance.StartCoroutineMethod(coroutine); //効果音 int channel = (int)index; SoundManager.Instance.Play("charaSelect", channel); } //右 else if (!data.isInput && input.LStick.x > 0) { id_m++; if ((DataBase.MODEL)id_m > DataBase.MODEL.YUKO_W) { id_m = (int)DataBase.MODEL.UTC_S; } //連続入力防止用フラグを立てる data.isInput = true; //キーフラグリセット用コルーチンの開始 IEnumerator coroutine = ResetKeyFlags(data); CoroutineManager.Instance.StartCoroutineMethod(coroutine); //効果音 int channel = (int)index; SoundManager.Instance.Play("charaSelect", channel); } int textIndex = id_i - 1; //キャラクター決定時処理 if (input.A) { data.registState = RegistState.End; EntryTextManager.Instance.StartCloseAndOpenVertical(textIndex); EntryTextManager.Instance.SetReadyText(textIndex); EntryTextManager.Instance.SetCharacterArrowActive(textIndex, false); ViewerManager.Instance.StartWinAnimation((int)index - 1); ViewerManager.Instance.SetRotationFlags((int)index - 1, false); //ボイス PlayVoice(id_m, id_i); } //キャラ名 EntryTextManager.Instance.SetCharacterName(textIndex, id_m); //IDの算出 id_i *= DataBase.ID_INDEX; id_m *= DataBase.ID_PREFAB; int id_c = DataBase.GetColorID(data.id); //IDの再設定 data.id = id_i + id_m + id_c; //IDの変更があった場合モデルビューに表示するモデルを切り替える if (DataBase.GetPrefabID(data.id) != before) { ViewerManager.Instance.Create(index, (id_m / DataBase.ID_PREFAB)); } }