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

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

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

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

Q&A

1回答

440閲覧

「Unity3D」二つのAnimationを利用するとキーフレームを設定してもオブジェクトの角度が変わらない。原因が知りたい

退会済みユーザー

退会済みユーザー

総合スコア0

Unity3D

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

0グッド

0クリップ

投稿2022/03/18 06:55

編集2022/03/18 07:02

提示コードですが一枚目のモーションAは武器が横で上下に少しだけゆらゆらするモーションで二つ目は武器が縦になってクルクル自転するモーションBなのですが AからBへのモーションは武器の縦横が上手く反応するのですがBからAへのモーションの推移で縦になった武器が横になりません。これは何が原因なのでしょうか? 

※キーフレームは設定しています。
スクリプトは武器にアタッチしています。

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

cs

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class TwinDagger : MonoBehaviour 6{ 7 public GameObject player; 8 public GameObject camera; 9 [SerializeField] float rotateSpeed = 600; 10 [SerializeField] float orbitSpeed = 2; 11 [SerializeField] float Y_distance = 0.5f; 12 [SerializeField] float distance = 2; 13 14 [SerializeField] Material material_Orbit; // 15 [SerializeField] Material material_Basic; // 16 17 18 19 20 21 22 // public GameObject camera; 23 private Animator animator; 24 private Animation animation; 25 private float time = 0; 26 // Start is called before the first frame update 27 void Start() 28 { 29 //animator = GetComponent<Animator>(); 30 animation = GetComponent<Animation>(); 31 32 animation["orbit_dagger"].speed = orbitSpeed; 33 34 35 36 37 } 38 39 40 41 42 // Update is called once per frame 43 void Update() 44 { 45 46 Orbit(); //武器軌道 47 48 49 Orbit_Animation(); //武器 切り替え 50 } 51 52 53 54 55 56 57 58 /*########################################## カメラの回転に沿って武器を回転移動 ##########################################*/ 59 private void Orbit() 60 { 61 62 63 Quaternion q = Quaternion.Euler(transform.forward); 64 Vector3 p = Vector3.Normalize(camera.transform.right) * distance; 65 66 Vector3 pDash = q * p; 67 pDash.y = Y_distance; 68 // transform.position = pDash; 69 70 } 71 72 73 74 /*########################################## 武器 切り替え ##########################################*/ 75 public void Orbit_Animation() 76 { 77 if(animation.IsPlaying("orbit_dagger") == true) 78 { 79 transform.Find("Object").GetComponent<Renderer>().material = material_Orbit; 80 81 time += Time.deltaTime; 82 transform.RotateAround(player.transform.position, Vector3.up, orbitSpeed * Time.deltaTime); 83 84 if(time > 1) 85 { 86 transform.Find("Object").GetComponent<Renderer>().material = material_Basic; 87 88 time = 0; 89 //animation.Stop(); 90 animation.Play("idle_dagger"); 91 } 92 } 93 94 95 96 } 97} 98 99

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

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

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

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

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

guest

回答1

0

そのアニメーションを再生するために使われている Animator コンポーネントの Apply Root Motion にチェックが入っているからでしょう。

投稿2022/03/18 07:11

bboydaisuke

総合スコア5339

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

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

退会済みユーザー

退会済みユーザー

2022/03/18 07:17

すいません。これAnimationコンポーネントなんですけどwどうすればいいのでしょか?
bboydaisuke

2022/03/18 07:34

本当に Animation コンポーネントを使っているのであれば、そのコンポーネントは何年も前に Animator コンポーネントに置き換わりました。今使っている人はいないでしょうし、使い方を覚えている人もほとんどいないと思います。 https://ugcj.com/unity%E3%81%AEanimation%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E3%81%A8animator%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E3%81%AE%E9%81%95%E3%81%84/
退会済みユーザー

退会済みユーザー

2022/03/18 07:35

わかりました。やってみます。!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問