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

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

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

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

Unity

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

Q&A

解決済

2回答

4364閲覧

【Unity】リスト化した座標(Vector3)の中からどれか1つの座標にアイテムを生成したい

gariyaro

総合スコア8

C#

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

Unity

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

1グッド

0クリップ

投稿2020/03/14 09:25

前提・実現したいこと

Unityで2D横スクロールアクションゲームを制作している初心者です。
リスト化した座標の中から6か所適当にアイテムを生成させようと試みた所エラーが発生しました。
解決の糸口が見いだせずにいます。宜しければ皆様の知恵をお借りしたいです。

発生している問題・エラーメッセージ

error CS1503: Argument 2: cannot convert from 'UnityEngine.Vector3' to 'UnityEngine.Transform' エラーCS1503:引数2:「UnityEngine.Vector3」から「UnityEngine.Transform」に変換できません

該当のソースコード

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class PresentGenerator : MonoBehaviour 6{ 7 public GameObject P1; 8 9 List<Vector3> Presentzahyo = new List<Vector3>//生成座標一覧 10 {new Vector3(-18f, 3f, 0),new Vector3(-17f, 0.5f, 0),new Vector3(-15f, -2f, 0),new Vector3(-10f, 1.5f, 0),new Vector3(-7f, 4f, 0),new Vector3(-3f, -1f, 0), 11 new Vector3(2f, 3f, 0),new Vector3(5f, -2.5f, 0f),new Vector3(8f, 3.5f, 0),new Vector3(12f, 2f, 0),new Vector3(14f, -0.5f, 0),new Vector3(19f, 1.5f, 0)};//プレゼントが生成される座標地点の一覧。 12 13 List<Vector3> Mainzahyo = new List<Vector3>(); 14 int random; 15 16 void Start() 17 { 18 for(int i = 0; i < 6; i++) 19 { 20 int random = Random.Range(0, Presentzahyo.Count); 21 Mainzahyo.Add(Presentzahyo[random]); 22 GameObject Present1_1 = Instantiate(P1,Mainzahyo[i]) as GameObject; 23 Presentzahyo.RemoveAt(random); 24 } 25 Presentzahyo = new List<Vector3> 26 {new Vector3(-18f, 3f, 0),new Vector3(-17f, 0.5f, 0),new Vector3(-15f, -2f, 0),new Vector3(-10f, 1.5f, 0),new Vector3(-7f, 4f, 0),new Vector3(-3f, -1f, 0), 27 new Vector3(2f, 3f, 0),new Vector3(5f, -2.5f, 0f),new Vector3(8f, 3.5f, 0),new Vector3(12f, 2f, 0),new Vector3(14f, -0.5f, 0),new Vector3(19f, 1.5f, 0) 28 }; 29 30 }

試したこと

GameObject Present1_1 = Instantiate(P1,Mainzahyo[i]) as GameObject;

GameObject Present1_1 = Instantiate(P1,new Vector3 (Mainzahyo[i])) as GameObject;
と書き換えましたが以下のエラーを吐きました
error CS1729: 'Vector3' does not contain a constructor that takes 1 arguments
エラーCS1729: 'Vector3'には1つの引数を取るコンストラクターが含まれていません

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

s.k👍を押しています

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

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

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

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

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

guest

回答2

0

自己解決

GameObject Present1_1 = Instantiate(P1, Mainzahyo[i]) as GameObject;

GameObject Present1_1 = Instantiate(P1, Mainzahyo[i], Quaternion.identity) as GameObject;

投稿2020/03/14 10:52

gariyaro

総合スコア8

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

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

0

Object.Instantiate
リファレンスを見ると、引数が2つの2つ目の引数はTransformとなっています。
この為、Vector3をTransformに変換しようとしてエラーとなっています。
引数の2つ目がVector3なのは
public static Object Instantiate (Object original, Vector3 position, Quaternion rotation);
public static Object Instantiate (Object original, Vector3 position, Quaternion rotation, Transform parent);
となっていますので、こちらを使うようにしましょう。

また

C#

1GameObject Present1_1 = Instantiate(P1,new Vector3(Mainzahyo[i])) as GameObject;

こちらの書き方ですが、まずMainzahyo[i]にはすでにVector3が格納されていますのでnewで新しくインスタンスを生成する必要はありません。
また、Vector3のコンストラクタにVector3を引数とするものは存在しません。
Vector3 (float x, float y, float z)と3つの引数を取るものだけです。

Presentzahyoも何故か2回値をセットしているようですがこれは必要なのですか?

投稿2020/03/14 09:54

YAmaGNZ

総合スコア10489

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

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

gariyaro

2020/03/14 10:52

YMmaGNZ様ご回答ありがとうございます。 リファレンスを参考に第三引数を入力すると問題無く可動致しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問