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

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

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

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

Unity

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

Q&A

解決済

1回答

2722閲覧

Unity プレハブ化し、複製する際に

takumigo

総合スコア12

C#

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

Unity

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

0グッド

0クリップ

投稿2017/02/16 05:56

編集2017/02/16 08:46

現在Unityでボールを同じ色のゴールに入れるというゲームを作成しています。その上で、ボールをプレハブ化し複製、ランダムな座標に生成したいと考えています。そのコードがこちらです。

C#

1using UnityEngine; 2using System.Collections; 3 4//ランダム座標で生成 5 6public class random : MonoBehaviour { 7 8 9 10 public GameObject obj; 11 12 // Use this for initialization 13 void Start () { 14 15 float x = Random.Range (-20.0f, 20.0f); 16 float y = Random.Range (10.0f,12.0f); 17 float z = 0; 18 19 Instantiate (obj, new Vector3 (x, y, z), Quaternion.identity); 20 21 } 22 23 // Update is called once per frame 24 void Update () { 25 26 } 27} 28

困っていることは、複製したボールが、Sceneビューにもともと存在するボールと同じ動きをしないことです。例えば、ゴールに入った際はオブジェクトを消す処理をしているのに消えてくれないといったり、オブジェクト同士でぶつかれば効果音が鳴るはずなのに鳴らないといった点等です。

ゲーム画面はこちらになりますイメージ説明

イメージ説明

どなたか回答よろしくお願いします。

追記

プレハブにスクリプトをアタッチしたのですが、コンポーネントの内容を登録できません。原因を教えていただけないでしょうか。(↓のようになります)

イメージ説明

イメージ説明

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

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

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

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

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

guest

回答1

0

ベストアンサー

プレハブ自体にスクリプトがアタッチされていないからだと思いますが。

投稿2017/02/16 06:05

turbgraphics200

総合スコア4267

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

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

takumigo

2017/02/16 08:46

回答いただきありがとうございます。プレハブにスクリプトをアタッチしたのですが、コンポーネントの内容を登録できません。原因として考えられるものは何でしょうか
turbgraphics200

2017/02/16 08:58

AudioSouce型に設定しているようですが、AudioSourceは、Add Component→Audio→AudioSouceで追加できると思いますが。
退会済みユーザー

退会済みユーザー

2017/02/16 09:51

turbgraphics200さんが言っているのはBallのプレハブにAudioSourceがアタッチされていないということではないでしょうか?
turbgraphics200

2017/02/16 09:58 編集

@kaka1102さん あ、いや普通、AudioSourceってAdd Componentで追加しません? んで、スクリプトのpublicないしはSerializeFieldにするのはAudioSourceに設定するAudioClipにすると思うのですが、pubulic/SerializeFieldにしているのは画像だとAudio Souceになってるようでしたから。
退会済みユーザー

退会済みユーザー

2017/02/16 10:15

@turbgraphics200さん 僕の場合はプレハブにアタッチしておいてpublic/SerializeFieldにしているAudioSource型の変数にInspectorからセットします. 念のためにAwake()ないしStart()でnullチェックをかけてnullの場合はGetComponent()でゲームオブジェクトから取得するという形をとっています.
turbgraphics200

2017/02/16 10:26

@kaka1102さん GetComponet()するのであれば、わざわざAudioSourceをpublic/ryにする必要ないと思うのですが、なぜわざわざそうするのでしょうか。(素人考えで申し訳ない)
退会済みユーザー

退会済みユーザー

2017/02/16 10:52 編集

@turbgraphics200さん GetComponent()は単にInspectorでセットし忘れたときのための保険です. 僕も以前はAddComponent()を多用していましたがInspector上から確認しづらい( ソースを見ないとAddされているかもわからない )のとどのみち使うことがわかっているならばあらかじめInspectorでコンポーネントをつけてしまえという考えからです. public/SerializeFieldにしておけばInspector上でドラッグ&ドロップでセットできますしアタッチされていないことも確認できるので面倒臭がりの僕からするとこっちのやり方のほうがしっくりきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問