前提・実現したいこと
Setboolでアニメーションを制御したい。
###バージョン
Unity 2020.2.0f1
macOS Catalina 10.15.7
発生している問題・エラーメッセージ
スクリプト内でSetBool("Animname", true)
をしても該当のアニメーションに遷移されない。
該当のソースコード
######GameClear.cs
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class GameClear : MonoBehaviour 6{ 7 private GameObject Player; //プレイヤーにアタッチされている(アニメーションの対象) 8 private Animator Clearanim; //アニメーター 9 public bool gameclear = false; //ゲームクリア管理用(クリア時にtrue) 10 private bool AnimFlag = true; //アニメを一度だけ再生するためのFlag 11 12 13 14 void Start() //プレイヤーについているアニメーターを取得 15 { 16 Player = GameObject.FindGameObjectWithTag("Player"); 17 Clearanim = Player.GetComponent<Animator>(); 18 19 } 20 21 void FixedUpdate() 22 { 23 if(gameclear) 24 { 25 if(AnimFlag) 26 { 27 Debug.Log("読めたよ"); //ここまで読まれていることは確認済み 28 Clearanim.SetBool("GameClear", true); //GameClearパラメータをtrueにする(問題の箇所) 29 AnimFlag = false; 30 } 31 } 32 } 33} 34
(以下追記)
######GameClear.cs(アニメーション挙動を確認できたバージョン)
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class GameClear : MonoBehaviour 6{ 7 private GameObject Player; //プレイヤーにアタッチされている(アニメーションの対象) 8 private Animator Clearanim; //アニメーター 9 public bool gameclear = false; //ゲームクリア管理用(クリア時にtrue) 10 private bool AnimFlag = true; //アニメを一度だけ再生するためのFlag 11 12 13 14 void Start() //プレイヤーについているアニメーターを取得 15 { 16 Player = GameObject.FindGameObjectWithTag("Player"); 17 Clearanim = Player.GetComponent<Animator>(); 18 Clearanim.SetBool("GameClear", true); //GameClearパラメータをtrueにする(問題の箇所) 19 20 } 21 22 void FixedUpdate() 23 { 24 if(gameclear) 25 { 26 if(AnimFlag) 27 { 28 Debug.Log("読めたよ"); //ここまで読まれていることは確認済み 29 AnimFlag = false; 30 } 31 } 32 } 33} 34
######SortieManager.cs(一部抜粋)
C#
1 [SerializeField] private GameClear gameClear; //GameCler.cs取得 2~ 3~ 4~ 5//敵の死亡処理 6 public void LostEnemy() 7 { 8 KillPoint++; //敵を倒した数を増やす 9 Debug.Log("KILLPOINT" + KillPoint); 10 if (KillPoint >= MaxEnemyNum) //倒した数が部隊の敵生成数を超えると 11 { 12 Debug.Log(FormationNum + "Sortie!"); 13 Debug.Log(FormationNum - 1 + "LastEnemyDie!"); 14 KillPoint = 0; //倒した数をリセット 15 StartCoroutine(WaitFormationSortie()); //次の部隊出撃 16 if(FormationNum >= 3) //最後の敵が倒されたら(部隊番号が最後の部隊番号+1を上回ったら) 17 { 18 gameClear.gameclear = true; //ここでgameclearフラグが立つ 19 //ここ以外でのフラグへの操作はなし 20 Debug.Log("GameClear"); 21 } 22 } 23 }
試したこと
Animatorタブの遷移AnyState→GameClearをStartAnim→GameClearに変更したが、これといった変化はみられなかった。
Clearanim.SetBool("GameClear", true);
をStart()
内に記述してみた。
**→上手くアニメーションに遷移できていることを確認。**パラメータもtrueになっており、プレイヤーの挙動も問題なかった。
###備考
コンソールへのエラーはなしです。スペルミスもよく確認しましたが、問題ないと思われます。
初心者ですので、どの情報が大事なものなのかよく分かりません。問題解決のために必要な情報が他にあれば教えていただきたいです。追記いたします。
あなたの回答
tips
プレビュー