teratail header banner
teratail header banner
質問するログイン新規登録
C#

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

Q&A

1回答

302閲覧

アニメーションで指定のフレームで止めたい

motod

総合スコア0

C#

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

1グッド

0クリップ

投稿2024/03/16 01:41

1

0

実現したいこと

unityのアニメーションで、フレームごとに表示が変わるようにしました。
例えば勝利数0の時は1フレーム目、勝利数1以上の時は2フレーム目を表示する、みたいな感じにしたいと思っています。

発生している問題

指定の場所で止まっておらず、最後のフレームが表示されてしまいます(5フレーム作ったとしたら、5フレーム目が表示される)。
ただ、0fを指定した時だけ、0fで止まって表示されました。

該当のソースコード

if (winnum == 0)
{
animatorobj.Play("StAnm", 0, 1f);
animatorobj.speed = 0f;
}
else
{
animatorobj.Play("StAnm", 0, 2f);
animatorobj.speed = 0f;
}

試したこと

チャットGPT先生に聞いたらこれやってみろと言われてやったのですが、うまく行きませんでした。

float normalizedTime = 0f;
normalizedTime = 3f / animatorobj.GetCurrentAnimatorClipInfo(0)[0].clip.length;
animatorobj.Play("BtnStAnm", 0, normalizedTime);
animatorobj.speed = 0f;

どなたかお助けください。

hqf00342👍を押しています

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

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

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

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

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

guest

回答1

0

Animator.Playの公式ドキュメントを確認したところ、3つ目の(あなたがフレーム数だと思っている)引数は、フレーム数ではなく、アニメーション全体を0f~1fとした場合の時間です。

基本的にフレームとは「再生するアニメーションのコマの数」なので、「60fpsであれば、60フレーム連続したものが、1秒間のアニメーション」ということになります。
したがって、「勝利数0の時は1フレーム目」ということは普通はしません。
動的なモーションなのか、ただのポーズなのかは、質問文から読み取れませんが、いずれにせよ、別々のアニメーションにしてしまったほうがトラブルにならないと思います。

投稿2024/03/16 02:30

fiveHundred

総合スコア10454

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

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

motod

2024/03/16 02:36

そうだったんですね! ありがとうございます! 確かに別々のアニメーション良いですね! やってみます! ありがとうございました!
motod

2024/03/16 02:37

回答ありがとうございます。 試したところ問題が解決しました! ベストアンサーに選ばせていただきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問