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

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

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

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

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

Unity

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

Blender

Blenderとは、オープンソースの3DCGソフトウェアです。フリーでありながら、3Dモデル作成、レンダリング、アニメーション、コンポジットなどのハイエンドに匹敵する高い機能を持ち、さらにゲームエンジンも搭載しています。

Q&A

解決済

1回答

3506閲覧

【Unity】アニメーションをアクティブ時に、子オブジェクトが動かない問題

TetsuyaY

総合スコア10

Unity3D

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

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

Unity

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

Blender

Blenderとは、オープンソースの3DCGソフトウェアです。フリーでありながら、3Dモデル作成、レンダリング、アニメーション、コンポジットなどのハイエンドに匹敵する高い機能を持ち、さらにゲームエンジンも搭載しています。

0グッド

0クリップ

投稿2020/08/14 04:17

編集2020/08/14 05:23

前提・実現したいこと

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を削除
→問題は解消されませんでした。

解決策や、予想される原因がわかる方いましたら、ご教示よろしくお願いします。
イメージ説明

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

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

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

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

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

guest

回答1

0

自己解決

根気良くググッて解決できました。
コンポーネントのRotateConstrateをChestにアタッチ、コこれよってChestは指定した別オブジェクトの回転に追従するようになります。ありがとうございました。

投稿2020/08/23 16:59

TetsuyaY

総合スコア10

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問