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

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

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

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

Unity

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

Q&A

解決済

2回答

1070閲覧

エディタ上で動作したAnimationがビルド後動かない

sh0u

総合スコア17

Unity3D

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

Unity

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

0グッド

0クリップ

投稿2023/06/24 14:36

実現したいこと

  • ビルド後のアプリケーション上でも、Animationの切替が正常に行われる

前提

移動時にAnimationを切り替えるスクリプトを組んでいます
エディタ上ではBlendTreeの値、モーション共に正常に動作するのですが、ビルド後のアプリケーション上だとAnimationが切り替わらず、想定通り動作しません
何が原因なのでしょうか?

Animatorの概要

WASDキーを押すと移動Animationが再生され、止まると待機Animationが再生される、といったごく普通のもので、BlendTreeで制御しています。
Animator

該当のソースコード

cs

1using UnityEngine; 2using UnityEngine.InputSystem; 3 4public class PlayerLocomotion : CharacterLocomotion 5{ 6 [SerializeField] private Animator anim; 7 8 [SerializeField, Label("移動可能か?")] private bool isCanMove = true; 9 [SerializeField, UnEditable] private Vector2 moveVector; 10 [SerializeField, Label("移動スピード")] private int moveSpeed = 5; 11 12 [SerializeField, Label("アクション名 - 移動"), UnEditable] private string actionName_Move = "Move"; 13 [SerializeField, Label("Anim変数名 - 移動Blend")] private string animName_Move; 14 15 private Rigidbody rb; 16 private PlayerInput playerInput; 17 18 private Vector3 latestPos; 19 20 private void Start() 21 { 22 rb = GetComponent<Rigidbody>(); 23 } 24 25 private void FixedUpdate() 26 { 27 Move(); 28 } 29 30 private void OnEnable() 31 { 32 if (TryGetComponent<PlayerInput>(out var component)) 33 { 34 playerInput = component; 35 36 playerInput.actions[actionName_Move].performed += OnMove; 37 playerInput.actions[actionName_Move].canceled += OnMove; 38 else return; 39 } 40 private void OnDisable() 41 { 42 if (TryGetComponent<PlayerInput>(out var component)) 43 { 44 playerInput = component; 45 46 playerInput.actions[actionName_Move].performed -= OnMove; 47 playerInput.actions[actionName_Move].canceled -= OnMove; 48 } 49 else return; 50 } 51 52 private void Move() 53 { 54 //移動処理 55 rb.MovePosition(transform.position + new Vector3(moveVector.x, 0, moveVector.y) * moveSpeed * Time.deltaTime); 56 if (moveVector == Vector2.zero) rb.velocity = Vector3.zero; 57 58 //移動方向に向く 59 var diff = transform.position - latestPos; 60 latestPos = transform.position; 61 if (diff.magnitude > 0.01f) 62 { 63 //leapで少しずつ回転させる(x,z軸は固定) 64 transform.rotation = Quaternion.RotateTowards(transform.rotation, Quaternion.LookRotation(diff), 360 * Time.deltaTime); 65 } 66 67 //移動アニメーション 68 var animMove = anim.GetFloat(animName_Move); 69 var animMove_after = moveVector == Vector2.zero ? animMove - 0.1f : animMove + 0.1f; 70 //blendの値を変更 71 anim.SetFloat(animName_Move, Mathf.Clamp(animMove_after, 0, 1)); 72 } 73 74 private void OnMove(InputAction.CallbackContext context) 75 { 76 if (context.canceled) 77 { 78 moveVector = Vector2.zero; 79 return; 80 } 81 82 if (!isCanMove) return; 83 84 moveVector = context.ReadValue<Vector2>(); 85 } 86 87//~~~~~ 88 89}

試したこと

  • Libraryフォルダの削除・再生成

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

Unity 2022.3.0

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

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

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

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

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

bboydaisuke

2023/06/24 15:02 編集

動いてるものを調べないとなんとも言えません。とりあえずログ出力を仕込んで、ログを調べてビルドしたアプリケーションでどのような挙動になっているか確かめるのが良いと思います。ビルドしたアプリケーションでもデバッグしたりログは出力できます。
guest

回答2

0

自己解決

自己解決しました。備忘録として書き残します。

未検証ですが、Animatorが入ってるGameObjectの中にAnimatorがあるGameObject
Animator
-Animator
という配置になってる、かつどちらも同じAnimation Controllerの場合、不具合が起きるようです。
また、上記の条件が整っている場合、一定確率でエディタ上でも不具合が起きるみたいです。

コメントしてくれた方、ありがとうございました。

投稿2023/06/24 15:06

sh0u

総合スコア17

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

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

0

この回答はGPT-4による自動生成回答です

原因の特定は難しいですが、いくつか考えられる原因と対処法を挙げます。

  1. アセットバンドルの問題: ビルド時にアニメーションや関連アセットが正しく含まれていない可能性があります。アセットバンドルの設定を確認し、必要なアセットが含まれていることを確認してください。

  2. プラットフォーム依存の問題: 特定のプラットフォームでのみ問題が発生する場合、プラットフォーム固有の問題が原因である可能性があります。異なるプラットフォームでビルドして問題が再現するか確認してください。

  3. スクリプトの実行順序: スクリプトの実行順序が原因で問題が発生することがあります。Edit > Project Settings > Script Execution Orderでスクリプトの実行順序を調整してみてください。

  4. ビルド設定の問題: ビルド設定によっては、アニメーションが正常に動作しないことがあります。ビルド設定を確認し、必要に応じて変更してみてください。

  5. バージョンの問題: Unityのバージョンが原因で問題が発生することがあります。最新の安定版にアップデートしてみてください。

これらの対処法を試しても問題が解決しない場合は、UnityのフォーラムやStack Overflowなどで質問してみてください。

投稿2023/06/24 14:37

teratail-ai

Powered by GPT-4

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問