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

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

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

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

Unity3D

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

Unity

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

Q&A

解決済

2回答

3060閲覧

Unity 自動生成するオブジェクトを親オブジェクトorカメラ位置に合わせた場所に生成する

ruu-1008

総合スコア7

C#

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

Unity3D

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

Unity

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

0グッド

0クリップ

投稿2016/08/31 04:37

###前提・実現したいこと
Unityで音ゲーを作っています。
指定の秒に音符を自動生成するようにしたのですが、
カメラに合わせて音符の発生位置を変えることができません。

下記がコードです。
・musicscore:五線譜のオブジェクトです。

###該当のソースコード
C#
using UnityEngine;
using System.Collections;

public class spawnNote : MonoBehaviour {
//音符を出すタイミング
public static int[] spawnTiming;
//発生させる音符のオブジェクト
public GameObject spawnNotes;
GameObject musicscoreobject;

void Start(){ spawnTiming = new int[] {1,2,3,5,6}; //YS 特定のタイミングでautospawnを呼びに行って音符を発生させる。仮で1,2,3,5,6入れてます。 for (int i = 0; i < spawnTiming.Length; i++) { Invoke ("autoRespawn", spawnTiming[i]); //Debug.Log ("script works"); } } void autoRespawn () { //Debug.Log ("script2 works"); musicscoreobject = GameObject.Find ("musicscore"); musicscoreobject = transform.root.gameObject; Instantiate (spawnNotes, new Vector3(15f,0f,20f), new Quaternion(0,-180,0,0)); }

}
###試したこと
musicscoreobject = GameObject.Find ("musicscore");
musicscoreobject = transform.root.gameObject;
で、親オブジェクトになるmusicscore(musicscoreobject)に紐づけて、位置を決めようとしましたが、失敗。

###補足情報(言語/FW/ツール等のバージョンなど)
Unity, Oculus

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

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

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

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

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

buibui80

2016/08/31 06:48

自動生成前のヒエラルキーの親子関係と配置、期待する自動生成後のヒエラルキーの親子関係と配置の詳細情報を追加してもらえませんか?
ruu-1008

2016/09/04 05:33

teratailを使いこなせておらず、こちらに気づかず失礼しました。 sakura_hanaさんの回答で無事に解決しましたので、クローズさせていただきます。ありがとうございました!
guest

回答2

0

ベストアンサー

親子関係によるアプローチの方だけ回答させて頂きます。

Instantiateで生成した時点では、親子関係無しの状態でオブジェクトは存在しています。

これを、子にしたいGameObject.transform.SetParent(親にしたいGameObject.transform);とすると
親子関係が作れます。

親子関係を作った後、子のtransform.localPosition = new Vector3(ほげほげ);
ローカル位置が設定出来ます。(親子関係を作る前にやると意味が無いので注意)

ちなみに以下のコードですが、それぞれ下記の意味になので使用の際はどちらか片方で良いかと思います。

musicscoreobject = GameObject.Find ("musicscore"); //musicscoreという名前のGameObjectを取得 musicscoreobject = transform.root.gameObject; //このオブジェクトの親子関係の一番上のGameObjectを取得

投稿2016/08/31 13:07

sakura_hana

総合スコア11427

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

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

ruu-1008

2016/09/04 05:32

回答に時間かかってしまい申し訳ありません。 こちらの方法で無事に解決しました。ベストアンサーにさせていただきます。
guest

0

カメラのベクトルを使って、そこから平行移動させた位置に出したらどうでしょう?

投稿2016/08/31 10:26

mugicya

総合スコア1046

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

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

ruu-1008

2016/09/04 05:32

回答に時間かかってしまい申し訳ありません。 こちらも試させていただきましたが、sakura_hanaさんのやり方のほうが使いやすかったので、そちらをベストアンサーにさせていただきました。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問