🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

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

Unity3D

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

Unity

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

Q&A

解決済

1回答

1164閲覧

アニメーションコントローラで複数の遷移パラメータを設定したが一部のアニメーションが動作しなくなった

tsk1999

総合スコア8

C#

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

Unity3D

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

Unity

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

0グッド

0クリップ

投稿2021/03/29 13:19

編集2021/04/02 12:42

前提・実現したいこと

プレイヤーが操作するモデルに対して、任意の入力により、idleまたはRunning(走るアニメーション)の状態でジャンプを行うか2種類の攻撃のいずれかのアニメーションを行うようにしたいです。
アニメーションコントローラは画像の通りで、元の状態に遷移するときのみExitTime(終了時間)を設定しています。
イメージ説明

発生している問題・エラーメッセージ

idleからRunningの状態遷移は問題なく実行されて対象のモデルが走ることができましたが、ジャンプへの状態遷移と攻撃モーションへの状態遷移は実行されずそれぞれのアニメーションが行われません。攻撃アニメーションの状態遷移を設定する前にジャンプアニメーションの状態遷移を設定しましたが、その時にはジャンプアニメーションは問題なく動作しました。
※ジャンプはスクリプト修正で動作するようになりました。

該当のソースコード

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour
{
Animator animator;
float inputHori;
float inputVert;
float inputJump;
float inputF1;
float inputF2;
// スタート時に呼ばれる
void Start()
{
this.animator = GetComponent<Animator>();
}

// フレーム毎に呼ばれる void Update() { inputHori = Input.GetAxisRaw("Horizontal"); inputVert = Input.GetAxisRaw("Vertical"); inputJump = Input.GetAxis("Jump"); inputF1 = Input.GetAxis("File1"); inputF2 = Input.GetAxis("File2"); } private void FixedUpdate() { //走る if (inputHori != 0 || inputVert != 0) { this.animator.SetBool("run", true); } else { animator.SetBool("run", false); } //跳ぶ if (inputJump != 0) { Debug.Log("ジャンプ"); this.animator.SetTrigger("jumping"); } //攻撃する if (inputF1 != 0) { Debug.Log("射撃"); this.animator.SetTrigger("shooting"); } if (inputF2 != 0) { Debug.Log("斬撃"); this.animator.SetTrigger("sword"); } } private void OnAnimatorMove() { animator.ResetTrigger("jumping"); animator.ResetTrigger("sword"); animator.ResetTrigger("shooting"); }

}

試したこと

攻撃モーションへの状態遷移をいずれもtriggerのパラメータで試してみましたがExitTimeの有無を変更した場合でもアニメーションが動作されません。

補足情報(FW/ツールのバージョンなど)

unityのバージョンは2020.1.4f1です。アニメーションのアセットはAssetStoreのMegaAnimationPackを使用しています。
以下は攻撃アニメーションへの遷移のスクショです。攻撃アニメーションへの遷移と元のアニメーション(running及びidle)への遷移の部分を添付しています。

・射撃(shooting)のアニメーション

イメージ説明
イメージ説明
イメージ説明
イメージ説明

・剣を振る(sword)のアニメーション

イメージ説明
イメージ説明
イメージ説明
イメージ説明

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

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

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

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

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

sakura_hana

2021/04/02 00:49

SetBoolしているif文の中にそもそも入っているのかをDebug.Log等で確認してください。 また、各状態遷移をどう設定しているのかのスクショをください。
tsk1999

2021/04/02 14:20

デバッグログを入れて確認してみました。ジャンプは修正後の質問文の通り動作してログにもジャンプしたことが表示されましたが攻撃についてはいずれも動作せずログにも記録されていません。
guest

回答1

0

自己解決

スクリプトのInputマネージャーがFireでなくFileになっていました。誤字修正で動かすことができました。

投稿2021/04/03 07:47

tsk1999

総合スコア8

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問