前提・実現したいこと
プレイヤーが操作するモデルに対して、任意の入力により、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)のアニメーション
回答1件
あなたの回答
tips
プレビュー