/// <inheritdoc /> public override XElement GetXml(string rootElemName, bool suppressDefaults) { XElement rootElem = new XElement(rootElemName); if (!suppressDefaults || !IsDefaultDelayMethod) { rootElem.Add(new XAttribute("delayMethod", DelayMethod.ToString())); } if (!suppressDefaults || !IsDefaultMaxDelay) { rootElem.Add(new XAttribute("maxDelay", MaxDelay.ToString(CultureInfo.InvariantCulture))); } if (!suppressDefaults || !IsDefaultRelShare) { rootElem.Add(new XAttribute("relShare", RelShare.ToString(CultureInfo.InvariantCulture))); } if (!suppressDefaults || !IsDefaultAnalogSourceCfg) { rootElem.Add(AnalogSourceCfg.GetXml(suppressDefaults)); } if (!suppressDefaults || !IsDefaultSpikingSourceCfg) { rootElem.Add(SpikingSourceCfg.GetXml(suppressDefaults)); } Validate(rootElem, XsdTypeName); return(rootElem); }
// Use this for initialization void Start() { StartCoroutine(DelayMethod.DelayMethodCall(0.5f, () => { test(); })); }
void Update() { //エネミーだけアニメーション同期可能(仮) if (gameObject.tag == "Enemy") { } //死んだとき if (_charaStatus._totalhp <= 0) { _deadFlag = true; gameObject.tag = "Dead"; if (FindObjectOfType <BattleFlowTest>()._randamEnemy == this.gameObject) { //敵の行動予定キャラならリセット FindObjectOfType <BattleFlowTest>()._randamEnemy = null; } StartCoroutine(DelayMethod.DelayMethodCall(1.5f, () => { _anim.SetBool("damage", true); Destroy(gameObject, 3.0f); })); } }
/// <summary> /// 点滅するよ!! /// </summary> void test() { text.enabled = !text.enabled; StartCoroutine(DelayMethod.DelayMethodCall(0.5f, () => { test(); })); }
//メニュー閉じる(未使用) public void MenuEnd() { if (state_ == State_.menu_mode) { m_audio.PlaySe("choose"); _nowChooseChar = null;//選んでたキャラリセット FindObjectOfType <RayBox>().move_ = true; //プログラム上の問題で遅延 StartCoroutine(DelayMethod.DelayMethodCall(0.5f, () => { changeST(State_.simulation_mode); })); } }
//攻撃ボタン用 public void attackBt() { if (state_ == State_.action_mode) { m_audio.PlaySe("choose"); FindObjectOfType <SubMenuRenderer>().SubMenuStart();//サブメニュー非表示 //プログラムの問題で遅延 StartCoroutine(DelayMethod.DelayMethodCall(0.5f, () => { state_ = State_.weapon_mode; })); } }
/// <summary> /// 敵陣ターン終了 /// </summary> public void EnemyTurnEnd() { _TurnText.color = new Color(0, 0, 255, 255); _TurnText.text = "Player Turn"; m_audio.PlaySe("TurnStart"); FindObjectOfType <StatusUI>().setactive(false); //演出上の遅延 StartCoroutine(DelayMethod.DelayMethodCall(waitTime, () => { Turn_TextReset(); FindObjectOfType <RayBox>().move_ = true; state_ = State_.simulation_mode; })); }
/// <summary> /// 敵の攻撃終了で攻撃された味方キャラの反撃 /// </summary> /// <param name="enemy">攻撃した敵</param> /// <param name="target">攻撃された味方</param> /// <param name="damage">反撃時のダメージ(ui用)</param> public void EnemyAttackEnd(GameObject enemy, GameObject target, int damage) { Debug.Log("自キャラの反撃!"); Instantiate(Resources.Load("Eff_Hit_6"), enemy.transform.position, Quaternion.identity); m_audio.PlaySe("GunShot"); DamegeUIInit(enemy, damage); FindObjectOfType <StatusUI>().setUnitStatus( enemy.GetComponent <Character>()._name, enemy.GetComponent <Character>()._totalhp, enemy.GetComponent <Character>()._totalMaxhp); FindObjectOfType <StatusUI>().setEnemyDamage(damage); //演出上の間をおいてからプレイヤーのターンへ StartCoroutine(DelayMethod.DelayMethodCall(waitTime, () => { EnemyTurnEnd(); })); }
/// <summary> /// 敵の攻撃用 /// </summary> /// <param name="target"></param> public void attack_to_player(GameObject target) { FindObjectOfType <BattleFlowTest>().state_ = State_.enemy_attack_mode; Debug.Log("敵の攻撃!"); Instantiate(Resources.Load("Eff_Hit_6"), target.transform.position, Quaternion.identity); FindObjectOfType <AudioManager>().PlaySe("GunShot"); int nowhp = GetComponent <Character>()._totalhp; int p_nowhp = target.GetComponent <Character>()._totalhp; //とりあえずHPゲージ表示 FindObjectOfType <StatusUI>().setactive(true); FindObjectOfType <StatusUI>().setPlayerHpGage(target.GetComponent <Character>()._totalMaxhp, p_nowhp); FindObjectOfType <StatusUI>().setEnemyHpGage(GetComponent <Character>()._totalMaxhp, nowhp); FindObjectOfType <BattleFlowTest>().PlayerRedGage.GetComponent <DamageGage>().setdamageGage(target.GetComponent <Character>()._totalMaxhp, p_nowhp); FindObjectOfType <BattleFlowTest>().EnemyRedGage.GetComponent <DamageGage>().setdamageGage(GetComponent <Character>()._totalMaxhp, nowhp); FindObjectOfType <BattleManager>().BattleSetup(gameObject, target); int dm = nowhp - GetComponent <Character>()._totalhp; int p_dm = p_nowhp - target.GetComponent <Character>()._totalhp; FindObjectOfType <BattleFlowTest>().DamegeUIInit(target, p_dm); FindObjectOfType <StatusUI>().setPlayerDamage(p_dm); FindObjectOfType <StatusUI>().setUnitStatus( target.GetComponent <Character>()._name, target.GetComponent <Character>()._totalhp, target.GetComponent <Character>()._totalMaxhp); //演出上の間 StartCoroutine(DelayMethod.DelayMethodCall(1.0f, () => { FindObjectOfType <BattleFlowTest>().EnemyAttackEnd(gameObject, target, dm); })); }
void Start() { /*メニュー制御不可*/ FindObjectOfType <MenuManager>().GetMainControlFlag(true); FindObjectOfType <SubMenuRenderer>().GetSubControlFlag(true); rayBox = FindObjectOfType <RayBox>().gameObject; rayBox.GetComponent <RayBox>().move_ = false; m_audio = FindObjectOfType <AudioManager>().GetComponent <AudioManager>(); Shousai = GameObject.Find("Shosai"); Shousai.SetActive(false); _TurnText.text = "第1章 \n PlayerTurn"; m_audio.PlayBgm("battle1"); StartCoroutine(DelayMethod.DelayMethodCall(1.0f, () => { Turn_TextReset(); /*メニュー制御可*/ FindObjectOfType <MenuManager>().GetMainControlFlag(false); FindObjectOfType <SubMenuRenderer>().GetSubControlFlag(false); rayBox.GetComponent <RayBox>().move_ = true; })); }
/// <summary> /// 自陣ターン終了 /// </summary> public void TurnEnd() { if (state_ == State_.enemy_counter_mode || state_ == State_.action_mode || state_ == State_.skill_mode || state_ == State_.item_mode) { //待機選択時 if (state_ == State_.action_mode) { FindObjectOfType <SubMenuRenderer>().SubMenuStart(); } //ステートを変更 & UI表示 _TurnText.color = new Color(255, 0, 0, 255); _TurnText.text = "Enemy Turn"; m_audio.PlaySe("TurnStart"); FindObjectOfType <ExpGage>().Enabled(false); //演出上の遅延 StartCoroutine(DelayMethod.DelayMethodCall(waitTime, () => { Turn_TextReset(); state_ = State_.enemy_turn; })); } }
public IEnumerator DelayMethod(float time, DelayMethod delayMethod) { yield return(new WaitForSeconds(time)); delayMethod(); }
public static void addDelayFunc(float delay, System.Delegate method, params object[] args) { DelayMethod dm = new DelayMethod(delay, method, args); _methodList.Add(dm); }
void Update() { //仮 勝敗判定 if (!GameObject.FindGameObjectWithTag("Enemy")) { _TurnText.text = "GameClear!!"; StartCoroutine(DelayMethod.DelayMethodCall(3.0f, () => { SceneManager.LoadScene("Story"); })); } else if (!GameObject.FindGameObjectWithTag("Player")) { _TurnText.text = "GameOver..."; StartCoroutine(DelayMethod.DelayMethodCall(3.0f, () => { SceneManager.LoadScene("GameOver"); })); } //遷移 switch (state_) { //キャラ選択 case State_.simulation_mode: if ((Input.GetKeyDown(KeyCode.Space) || Input.GetButtonDown("O")) && !Shousai.activeInHierarchy) //○ボタン予定 { StartCoroutine(DelayMethod.DelayMethodCall(0.1f, () => { ChooseChara(); })); } if (Input.GetKeyDown(KeyCode.Alpha9) || Input.GetButtonDown("R1")) { Ray serch = new Ray(rayBox.transform.position, -rayBox.transform.up); RaycastHit hiton = new RaycastHit(); //カーソルの下になんかいて if (Physics.Raycast(serch, out hiton, 1000.0f)) { if (hiton.transform.tag == "Player") { Shousai.SetActive(!Shousai.activeInHierarchy); FindObjectOfType <RayBox>().move_ = false; FindObjectOfType <MenuManager>().GetMainControlFlag(true); if (Shousai.activeInHierarchy) { FindObjectOfType <Shosai>()._chara = hiton.transform.gameObject; } else { FindObjectOfType <RayBox>().move_ = true; FindObjectOfType <MenuManager>().GetMainControlFlag(false); } } } } break; //キャラがいないマスならメニュー開く(使わない) case State_.menu_mode: break; //移動中 case State_.move_mode: //アニメ再生とか入れる予定 break; //移動後の行動選択 case State_.action_mode: //現状何もなし break; //武器選択 case State_.weapon_mode: if (!once) { var items = _nowChooseChar.GetComponent <Character>()._itemprefablist.GetComponent <ItemPrefabList>()._itemprefablist; count = 0; if (items == null) { once = true; choose = true; } foreach (var obj in items) { if (obj.GetComponent <Weapon>()) { GameObject ui = Instantiate( Resources.Load("WeaponUI"), GameObject.Find("Canvas1").transform.Find("Frame").transform) as GameObject; ui.transform.localPosition = new Vector3(0, count * -100, 0); ui.transform.Find("Text").GetComponent <Text>().text = obj.GetComponent <Weapon>()._name; ui.GetComponent <Image>().color = new Color32(170, 170, 170, 170); weapons.Add(obj); weaponUIs.Add(ui); count++; } } count = 0; once = true; } if (!choose) { foreach (var obj in weaponUIs) { obj.GetComponent <Image>().color = new Color32(170, 170, 170, 170); } weaponUIs[count].GetComponent <Image>().color = new Color32(255, 255, 255, 255); if (Input.GetAxis("AxisY") == 1 || Input.GetAxis("Vertical") == 1) { if (count == 0) { return; } count--; } if (Input.GetAxis("AxisY") == -1 || Input.GetAxis("Vertical") == -1) { if (count == weaponUIs.Count - 1) { return; } count++; } if (Input.GetButtonDown("O") || Input.GetKeyDown(KeyCode.Space)) { choose = true; } } else { foreach (var obj in weaponUIs) { obj.SetActive(false); } _nowChooseChar.GetComponent <Character>().Equipment(weapons[count]); choose = false; once = false; weapons.Clear(); weaponUIs.Clear(); _nowChooseChar.GetComponent <Move_System>().AttackReady(); } break; case State_.skill_mode: if (!once) { var skill = _nowChooseChar.GetComponent <Character>()._skillprefablist.GetComponent <SkillPrefabList>()._skillprefablist; count = 0; if (skill == null) { once = true; choose = true; } foreach (var obj in skill) { if (obj.GetComponent <CommandSkill>()) { if (obj.GetComponent <CommandSkill>()._activ) { GameObject ui = Instantiate( Resources.Load("WeaponUI"), GameObject.Find("Canvas1").transform.Find("Frame").transform) as GameObject; ui.transform.localPosition = new Vector3(0, count * -100, 0); ui.transform.Find("Text").GetComponent <Text>().text = obj.GetComponent <CommandSkill>()._name; ui.GetComponent <Image>().color = new Color32(170, 170, 170, 170); weapons.Add(obj); weaponUIs.Add(ui); count++; } } } count = 0; once = true; } if (!choose) { foreach (var obj in weaponUIs) { obj.GetComponent <Image>().color = new Color32(170, 170, 170, 170); } weaponUIs[count].GetComponent <Image>().color = new Color32(255, 255, 255, 255); if (Input.GetAxis("AxisY") == 1 || Input.GetAxis("Vertical") == 1) { if (count == 0) { return; } count--; } if (Input.GetAxis("AxisY") == -1 || Input.GetAxis("Vertical") == -1) { if (count == weaponUIs.Count - 1) { return; } count++; } if (Input.GetButtonDown("O") || Input.GetKeyDown(KeyCode.Space)) { choose = true; } } else { foreach (var obj in weaponUIs) { obj.SetActive(false); } _nowChooseChar.GetComponent <Character>()._skillprefablist.GetComponent <SkillPrefabList>().SkillEffect(_nowChooseChar, weapons[count]); choose = false; once = false; weapons.Clear(); weaponUIs.Clear(); TurnEnd(); state_ = State_.stay_mode; } break; //道具選択 case State_.item_mode: if (!once) { var items = _nowChooseChar.GetComponent <Character>()._itemprefablist.GetComponent <ItemPrefabList>()._itemprefablist; count = 0; foreach (var obj in items) { if (obj.GetComponent <Item>()) { GameObject ui = Instantiate( Resources.Load("WeaponUI"), GameObject.Find("Canvas1").transform.Find("Frame").transform) as GameObject; ui.transform.localPosition = new Vector3(0, count * -100, 0); ui.transform.Find("Text").GetComponent <Text>().text = obj.GetComponent <Item>()._name; ui.GetComponent <Image>().color = new Color32(170, 170, 170, 170); weapons.Add(obj); weaponUIs.Add(ui); count++; } } if (count == 0) { Debug.Log("使えるアイテムを持っていません"); FindObjectOfType <SubMenuRenderer>().SubMenuStart(); choose = false; once = false; weapons.Clear(); weaponUIs.Clear(); state_ = State_.action_mode; } count = 0; once = true; } if (!choose) { foreach (var obj in weaponUIs) { obj.GetComponent <Image>().color = new Color32(170, 170, 170, 170); weaponUIs[count].GetComponent <Image>().color = new Color32(255, 255, 255, 255); } if (Input.GetAxis("AxisY") == 1 || Input.GetAxis("Vertical") == 1) { if (count == 0) { return; } count--; } if (Input.GetAxis("AxisY") == -1 || Input.GetAxis("Vertical") == -1) { if (count == weaponUIs.Count - 1) { return; } count++; } if (Input.GetButtonDown("O") || Input.GetKeyDown(KeyCode.Space)) { choose = true; } } else { foreach (var obj in weaponUIs) { obj.SetActive(false); } _nowChooseChar.GetComponent <Character>()._itemprefablist.GetComponent <ItemPrefabList>().UseItem(_nowChooseChar, weapons[count]); choose = false; once = false; weapons.Clear(); weaponUIs.Clear(); TurnEnd(); state_ = State_.stay_mode; } //仕様未定 break; //待機選択 case State_.stay_mode: //ターン終了 break; //攻撃対象の選択 case State_.player_attack_mode: Ray ray = new Ray(rayBox.transform.position, -rayBox.transform.up); RaycastHit hit = new RaycastHit(); //カーソルの下になんかいて if (Physics.Raycast(ray, out hit, 1000.0f)) { if (hit.transform.tag == "Enemy") { FindObjectOfType <StatusUI>().setBattleStatus( _nowChooseChar.GetComponent <Character>()._name, _nowChooseChar.GetComponent <Character>()._totalhp, _nowChooseChar.GetComponent <Character>()._totalMaxhp, _nowChooseChar.GetComponent <Character>()._total_attack, _nowChooseChar.GetComponent <Character>()._hit, _nowChooseChar.GetComponent <Character>()._critical, hit.transform.GetComponent <Character>()._name, hit.transform.GetComponent <Character>()._totalhp, hit.transform.GetComponent <Character>()._totalMaxhp, hit.transform.GetComponent <Character>()._total_attack, hit.transform.GetComponent <Character>()._hit, hit.transform.GetComponent <Character>()._critical); } //スペース(仮)が押されて && まだ攻撃してないなら if ((Input.GetKeyDown(KeyCode.Space) || Input.GetButtonDown("O")) && !attacking) { //カーソルがエネミーをさしていたら if (hit.transform.tag == "Enemy") { attacking = true; Debug.Log("自キャラの攻撃!"); FindObjectOfType <RayBox>().move_ = false; //とりあえずのエフェクト表示&SE Instantiate(Resources.Load("Eff_Hit_6"), hit.transform.position, Quaternion.identity); m_audio.PlaySe("GunShot"); int e_nowhp = hit.transform.GetComponent <Character>()._totalhp; int p_nowhp = _nowChooseChar.GetComponent <Character>()._totalhp; //とりあえずゲージ表示 FindObjectOfType <StatusUI>().setactive(true); FindObjectOfType <StatusUI>().setPlayerHpGage( _nowChooseChar.GetComponent <Character>()._totalMaxhp, p_nowhp); FindObjectOfType <StatusUI>().setEnemyHpGage( hit.transform.GetComponent <Character>()._totalMaxhp, e_nowhp); PlayerRedGage.GetComponent <DamageGage>().setdamageGage( _nowChooseChar.GetComponent <Character>()._totalMaxhp, p_nowhp); EnemyRedGage.GetComponent <DamageGage>().setdamageGage( hit.transform.GetComponent <Character>()._totalMaxhp, e_nowhp); //戦闘結果計算 FindObjectOfType <BattleManager>().BattleSetup(_nowChooseChar, hit.transform.gameObject); e_dm = e_nowhp - hit.transform.GetComponent <Character>()._totalhp; //敵ダメージ算出(仮) p_dm = p_nowhp - _nowChooseChar.GetComponent <Character>()._totalhp; //プレイヤダメージ算出 DamegeUIInit(hit.transform.gameObject, e_dm); FindObjectOfType <StatusUI>().setEnemyDamage(e_dm); //攻撃キャラを一時的に保存 _nowCounterChara = hit.collider.gameObject; _nowAttackChara = _nowChooseChar; //結果をUIに渡す FindObjectOfType <StatusUI>().setUnitStatus( hit.collider.GetComponent <Character>()._name, hit.collider.GetComponent <Character>()._totalhp, hit.collider.GetComponent <Character>()._totalMaxhp); //選択キャラの攻撃可能状態を解除 _nowChooseChar.GetComponent <Move_System>().AttackRelease(); //演出上の間をおいてから敵の反撃へ StartCoroutine(DelayMethod.DelayMethodCall(waitTime, () => { state_ = State_.enemy_counter_mode; })); } //プレイヤー else if (hit.transform.tag == "Player") { //何もしない } //カーソルがエネミー以外のとこにあると else { Debug.Log("そのマスには何もいません"); } } } break; case State_.enemy_counter_mode: if (attacking) { Debug.Log("敵の反撃!"); //とりあえずの反撃エフェクト表示&SE Instantiate(Resources.Load("Eff_Hit_6"), _nowAttackChara.transform.position, Quaternion.identity); m_audio.PlaySe("GunShot"); DamegeUIInit(_nowAttackChara, p_dm); FindObjectOfType <StatusUI>().setPlayerDamage(p_dm); //結果をUIに渡す FindObjectOfType <StatusUI>().setUnitStatus( _nowAttackChara.GetComponent <Character>()._name, _nowAttackChara.GetComponent <Character>()._totalhp, _nowAttackChara.GetComponent <Character>()._totalMaxhp); //演出上の遅延 StartCoroutine(DelayMethod.DelayMethodCall(waitTime, () => { TurnEnd(); })); attacking = false; } break; //敵ターン case State_.enemy_turn: FindObjectOfType <StatusUI>().setactive(false); //行動予定エネミーのHPが0なら if (_randamEnemy == null) { //別のエネミーに _randamEnemy = GameObject.FindGameObjectWithTag("Enemy"); } //敵が一体でもいれば if (_randamEnemy) { //敵の行動を開始 _randamEnemy.GetComponent <EnemyBase>().SetNextGoal(_randamEnemy.GetComponent <EnemyBase>().target_square); FindObjectOfType <RayBox>().SetCameraPosition(_randamEnemy); state_ = State_.enemy_move_mode; } break; //敵の移動 case State_.enemy_move_mode: //敵のアニメーションなどを入れる予定 break; //敵の攻撃 case State_.enemy_attack_mode: //敵のアニメーションなどを入れる予定 break; //プレイヤーの反撃(いらないかも) case State_.player_counter_mode: break; default: break; } }