前提・実現したいこと
Unityにて、下記のような動作を実現しようとしています。
**・キャラクターのアニメーションがアクティブの時に、スクリプトで指定した子オブジェクト(今回はchestパーツ)に回転を加える
・入力はjoystick packを使い、上方向に入力したら子オブジェクト(chest)が回転し、キャラクターが上を向く**
構築したスクリプトなどは下記のとおりです。
・バージョン unity 2019.3.15f
・キャラクターは人型で、アバターのAnimationTypeは「Generic」
・scriptは下記の通りです
using
1using System.Collections.Generic; 2using UnityEngine; 3 4public class PlayerAngleJoy : MonoBehaviour 5{ 6 public FixedJoystick joystick; 7 //プレイヤーの子オブジェクトを変数に格納 8 public GameObject Head; 9 //回転させるスピード 10 public float RotateSpeed = 1.0f; 11 // Start is called before the first frame update 12 void Start() 13 { 14 15 } 16 17 // Update is called once per frame 18 void LateUpdate() 19 { 20 // ジョイスティックの状態表示 21 float x = joystick.Horizontal; 22 float y = joystick.Vertical; 23 24 // 回転させるQuaternionを作成(変数をrotとする) 25 Quaternion rotx = Quaternion.Euler(0, x * RotateSpeed, 0); 26 // 回転させるQuaternionを作成(変数をrotとする) 27 Quaternion roty = Quaternion.Euler(-y * RotateSpeed, 0, 0); 28 // 現在の自信の回転の情報を取得する。 29 Quaternion Playerpos = this.transform.rotation; 30 Quaternion HeadAngle = Head.transform.localRotation; 31 // 合成して、自身に設定 32 this.transform.rotation = Playerpos * rotx; 33 Head.transform.localRotation = HeadAngle * roty; 34 35 36 } 37} 38
###発生している問題・エラーメッセージ
・発生した問題としては、chestが動かないことです。厳密には若干動いているのですが、変化した角度は1、2°程です。(何かの影響で角度の可動域がロックされている?)
・また、joystickで回転を入力してますが、joystickを離すと、変化した角度も元に戻ってしまいます。(下記画像参照)理想としては、joysticで変化させた角度は、joystickを離しても保持させたいです。
・スクリプトエラー等は発生してません。スクリプト以外の何かが、chestのrotateに影響を及ぼしているのでしょうか?
試したこと
①アニメーションを非アクティブ化して、joystickで回転を入力
→chestは動きました。(アクティブに戻したらchestは元の位置に戻りました。)
②chest以外の子オブジェクトをアタッチ
→hip,neck,headだと回転が反映され、理想の動作が実現。しかし、spineや他の子オブジェクトは、chestと同様に回転しませんでした。
③Blenderにて、アクティブにするアニメーションの上半身のtransformを削除
→問題は解消されませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。