移動と回転のアニメーションを作っているのですが、
アニメーションを繰り返すうにアニメーションとは関係ない座標までどんどんずれていってしまいます。
ヒエラルキー
RootObject(空のゲームオブジェクト) ├ LayerObject(円柱オブジェクト) ├ LayerObject(コピー) : └ LayerObject(コピー)
RootObjectにAnimatorをアタッチしアニメーションを実行
(y=5に持ち上げて180度回転しy=0に戻る裏返しアニメーションです)
0:00 0:30 0:45 1:00 position.y 0 5 5 0 rotation.z 0 0 180 180
スクリプトで複数のLayerObjectを複製して積み重ね
その集合体(RootObject)を裏返すアニメーションをイメージしています。
実行したところ円柱層の底面を軸に回転し地面にめり込んでしまいました。
(ルートモーションを使うとどんどん下に行ってしまう)
┌──────────────────┐ ┐ ├──────────────────┤ │ ├──────────────────┤ <-Layer │ ├──────────────────┤ │ ──└──────────────────┘── y=0 ┴ RootObject ↓ そのまま180度回転した結果 ──┌──────────────────┐── y=0 ┬ RootObject ├──────────────────┤ │ ├──────────────────┤ <-Layer │ ├──────────────────┤ │ └──────────────────┘ ┘
円柱の層の高さ/2を回転軸(RootObjectのPositioon.y)として回転させてみたのですがうまくいきません。
h--┌──────────────────┐ │ │ h/2--│------------------│--- ┴ RootObject(0,h/2,0) ├──────────────────┤ ──└──────────────────┘── y=0 LayerObject(最低面)(0,-h/2,0)
LayerObjectのScale.y= h(全体の高さ)/Layer数/2(円柱オブジェクトの高さ)
Layer数と高さhを設定してオブジェクトを生成し
アニメーションできるようにしたいのですが、
- ルートモーションなしの場合
RootObject.position.y=0
→ 地面を軸に回転してしまい、地面にめり込む
RootObject.position.y=h/2
→ 高さやLayer数を変えた時にアニメーション開始時に高さのずれ生じ、地面から浮いてしまう(Objectの座標を無視しアニメーションで設定した座標になる)
- ルートモーションありの場合
高さやLayer数を変えても開始時の高さはy=0になっているが、
アニメーション終了時に想定外の座標に行ってしまう
(なぜかx座標が変わっていて、y座標はどんどん地面にめり込んでいく)
裏返しアニメーションをした後でy=0に戻ってくるようにするにはどうすればいいでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/16 23:36