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

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

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

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

Unity3D

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

Unity

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

Q&A

解決済

1回答

2970閲覧

Unity 生成したオブジェクトのポジションとアニメーションの設定方法

unity_level1

総合スコア8

C#

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

Unity3D

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

Unity

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

0グッド

0クリップ

投稿2020/06/17 10:12

編集2020/06/18 12:49

Unityで2Dのゲームを制作しております。
その際に、Animationの設定をしてPrefab化したオブジェクトをスクリプトで生成し、
スクリプト内で決めたポジションへ配置したいため、ご教示いただきたいです。

■環境
・Unity 20193.7f1

■アニメーションを持たせたPrefabの設定
こちらはキャプチャを貼ります
イメージ説明

・Animator、Animationの設定
イメージ説明
イメージ説明
イメージ説明

アニメーションの動きとしては、左右(PositionX)を0~0.25の値でループで移動させております。

using System.Collections; using System.Collections.Generic; using UnityEngine; public class SelectObjectTest : MonoBehaviour { //Listから選択したオブジェクトを入れる GameObject Clone; //Inspector上でオブジェクトを格納 [SerializeField] private List<GameObject> SObject; [SerializeField] private List<float> ObjectPosX; [SerializeField] private List<float> ObjectPosY;   //オブジェクトを生成したい数だけ、ループさせる回数を定義 [SerializeField] private int whileCount; //配列からオブジェクトを呼び出すときに使用する [SerializeField] private int sicapture = 10; // Start is called before the first frame update void Start() { Vector2 clonePosition = GameObject.Find("background").transform.position; while (SObject.Count > 0 && whileCount < 3) { //ポジション要素を呼び出すList番号を用意 int indexposX = whileCount; int indexposY = whileCount;              //生成するオブジェクトのx軸 float x = ObjectPosX[indexposX];   //生成するオブジェクトのy軸 float y = ObjectPosY[indexposY];       //Listに入れたオブジェクトをランダムに取得する int index = Random.Range(0,SObject.Count);       //オブジェクトの配置場所を指定する clonePosition = new Vector2(x,y); //オブジェクトを生成する Clone = Instantiate(SObject[index], clonePosition, Quaternion.identity); //SObjectに格納されたオブジェクトを削除する SObject.RemoveAt(index); whileCount++; } } }

上記のスクリプトのListのObjectPosX、ObjectPosYで配置場所の固定値を指定しております。

アニメーションを持たせていないオブジェクトは指定の位置に配置されるのですが、
アニメーションを持たせているオブジェクトは、おそらくアニメーションで設定した開始地点(0,0)に
配置されているように見受けられます。

実現したいこと

アニメーションを持たせた状態でList(ObjectPosX、ObjectPosY)に指定した配置位置に
オブジェクトを配置したいと考えております。

その場合、どのようなUnity上の設定、スクリプトを作成すればよろしいでしょうか。

お手数ですが、ご教示のほどよろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

自己解決

InspectorからAnimatorのApply Root Motionにチェックを入れることで、
スクリプトやPrefabのInspector上で設定したpositionにPrefabが生成され、その後にAnimationで設定した動きになることを確認できましたため、本質問は解決済みとさせていただきます。

投稿2020/06/19 06:34

unity_level1

総合スコア8

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問