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

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

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

Q&A

解決済

1回答

1352閲覧

アニメーションの遷移をスクリプトでコントロールしたい

kosho206

総合スコア41

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

0グッド

0クリップ

投稿2020/04/23 01:24

アニメーション遷移を、このサイト(https://marudice.hatenablog.jp/entry/2016/08/27/211243)のように全てスクリプトからコントロールできるようにしたいです。
なのでアニメーション用のコードとして、そのサイトを真似して下のスクリプトを書きました。

using System.Collections; using System.Collections.Generic; using UnityEngine; namespace CSharpScript { public class UnkomanAction : MonoBehaviour { Vector3 translation; Animator Anim; public enum Idx { Idle = 0, run = 1, Untiburi = 2 } void Start() { Anim = GetComponent<Animator>(); } void Update() { translation = GetComponent<UnkomanControl>().Translation; if (translation == Vector3.zero) { Anim.SetInteger("AnimIdx", (int)UnkomanAction.Idx.Idle); } if (translation.x != 0f) { Anim.SetInteger("AnimIdx", (int)UnkomanAction.Idx.run); } if (translation.z != 0f) { Anim.SetInteger("AnimIdx", (int)UnkomanAction.Idx.run); } if(Input.GetMouseButtonUp(1)) { Anim.SetInteger("AnimIdx", (int)UnkomanAction.Idx.Untiburi); } } } }

アニメーターコントローラー

ですが、Entryに接続した最初のアニメーション以外、全く再生されませんでした。
参考にしたサイトとほとんど同じようにしたつもりなのですが、再生されないのはどこが原因なのか教えてください。

※参考にしたサイトでは一番最後にこの処理を自動化していますが、僕は自動化まではやらず、そのひとつ前の方法を真似しました。

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

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

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

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

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

guest

回答1

0

ベストアンサー

ConditionsにTrigger条件があるにも関わらずそれを切り替えていない事が問題かと思います。

参考しているサイトの最後にも記述がありますがこれをおこなっていません。

あとは前述の通り
mAnimator.SetTrigger("AnimIdx", (int)PlayerDefine.Idx.Run);
などとしてやれば、晴れて「用意したアニメーションを直接コードから指定して再生する」ができちゃいま> す! コードはコピペ改変ご自由に~。

直す場合は下記の様になります。

C#

1 if (translation == Vector3.zero) 2 { 3 Anim.SetTrigger( "Idle" ); 4 Anim.SetInteger("AnimIdx", (int)UnkomanAction.Idx.Idle); 5 } 6 if (translation.x != 0f) 7 { 8 Anim.SetTrigger( "run" ); 9 Anim.SetInteger("AnimIdx", (int)UnkomanAction.Idx.run); 10 } 11 if (translation.z != 0f) 12 { 13 Anim.SetTrigger( "run" ); 14 Anim.SetInteger("AnimIdx", (int)UnkomanAction.Idx.run); 15 } 16 if(Input.GetMouseButtonUp(1)) 17 { 18 Anim.SetTrigger( "Untiburi" ); 19 Anim.SetInteger("AnimIdx", (int)UnkomanAction.Idx.Untiburi); 20 }

投稿2020/04/24 03:38

編集2020/04/24 03:38
Hawn

総合スコア1222

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

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

kosho206

2020/04/24 08:50

回答いただいた通りSetTriggerを書いたら再生されました! パラメータの使い方が少しだけ分かった気がします ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問