質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

2312閲覧

Unity Animatorの使い方

WY_leapa

総合スコア9

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

1クリップ

投稿2018/06/30 05:05

前提・実現したいこと

初歩的な2Dゲームを作ろうとしています。
ゲーム開始時に"よーい"というテキストが流れるstateから"ドン"というテキストが流れるstateへ繋ぎ、その次に空のstateへ遷移したら別のAnomatorのアニメ制御をしたいと考えています。しかし下記の問題が解決できず思うようにいきません。そもそもAnimatorの使い方、考え方を間違っているのかもしれません。そこで以下のことを教えていただきたいです。よろしくお願いします。

①下記の問題の解決法
②あるStateが終了したことを検知し別の処理を行いたいときの記述方法
③このようなAnimatorの使い方が正しいかどうか

発生している問題

空のstateでとどまっていてほしいのですが、ドンstateから空のstateへ一瞬だけ遷移したのちに、ドンstateへ戻り、同じアニメーションがずっと再生されてしまいます。(ループは外してあります)

該当のソースコード

Animator anim,anotheranim;
bool makeenemy;

Void Start(){
anim=GetComponent<Animator>();
anotheranim=GameObject.Find("〇〇").GetComponent<Animator>();
}

void UpDate(){
if(anim.GetCurrentAnimationStateInfo(0).IsName("kara"){
anotheranim.Play("△△");
}
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

DeadEndShoot666

2018/07/01 04:20

うまく投稿できなかった気がするので二重になっていたらすいません。animとanotheranimどちらがテキスト用でしょうか
WY_leapa

2018/07/01 06:22

animがテキスト用です。anim内にはよういstateとドンstate、karastateがあり、karastateになったら(というよりドンstateが終わったことを判別して)別の処理を行いたいと考えています。
guest

回答1

0

ベストアンサー

1."空"ステートからExitか"よ~い"か"どん"にトランジションが伸びていないでしょうか
Exitに入ると自動的にEntryに送り返されます(回避法があるかもしれませんが自分は知りません)

2.StateMachineBehaviourというAnimationControllerにアタッチできる基底クラスがあり、
継承したものをAnimationController全体またはステートにアタッチできます

こちらが詳しいです
https://qiita.com/toRisouP/items/b6540b7f514d18b9a426

気付いているような気がしますが、今のコードですと"空"に居る間毎フレーム延々とanotheranim.Play("△△");が走るのでよろしくありません

StateMachineBehaviourを使わないのであれば、現在のクラス内に適当なboolを設定して

Animator anim,anotheranim; bool makeenemy; bool Hoge;//追加フラグ void Start(){ anim=GetComponent<Animator>(); anotheranim=GameObject.Find("〇〇").GetComponent<Animator>(); } void Update(){ if(anim.GetCurrentAnimationStateInfo(0).IsName("kara") && !Hoge/*判定追加*/){ anotheranim.Play("△△"); Hoge = true; } }

質問されている範囲だけなら機能するような気がします

3.あまり詳しくありませんが、取ろうとしている方法だけならそれ程間違っていないと思います。
Animator自体が割と簡素であまり使い勝手がよろしくなく(あるだけ有難いですが)。モデルもボーンも
ゲーム側のスクリプトも千差万別なので、あらゆる手段をつくして簡潔にバグなくまとめられればそれで正解です

投稿2018/07/01 10:53

DeadEndShoot666

総合スコア203

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

WY_leapa

2018/07/03 13:18

今回の原因についてはわからないままでしたが、StateMachineBehaviorで私の行いたかったことは解決できそうです。まだC#を始めたばかりで適切な書き方はできていないと思いますがまずは簡潔に書けるように努めたいと思います。ご丁寧に回答していただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問