私はゲームを構築していて、問題に遭遇しました。私は、 "ジャンプ"ボタンが押されたときにオブジェクトをインスタンス化しようとしています。インスタンス化されたオブジェクトに指定された場所の間のランダムな位置を与えようとしています。しかし、私のインスタンス化関数は2番目の引数である "Transform"変数のみを受け入れ、一般的にそうであるようにVector3の値を取り込まないようにしています。Unity C# - インスタンシエートされたオブジェクトの位置の 'Vector3'ではなく、 "Transform"を受け入れるだけでインスタンシエートする
誰でも教えてください。なぜ、この問題の解決策はありますか?これはコードです:Update関数のInstantiate関数に注意してください。ここで問題に取り掛かります。私はVector3のgarbagePositionを第2引数として使用したいと思います。ありがとう。
public Transform ground;
public GameObject garbage;
public float loadTime;
public int numberOfObjects;
private Queue<Transform> groundQueue;
public Vector3 startPosition;
public Vector3 nextPosition;
// Use this for initialization
void Start() {
nextPosition = startPosition;
groundQueue = new Queue<Transform>(numberOfObjects);
for(int i = 0; i<numberOfObjects; i++)
{
groundQueue.Enqueue((Transform)Instantiate(ground));
}
for(int j = 0; j<numberOfObjects; j++)
{
Recycle();
}
}
// Update is called once per frame
void Update() {
if (groundQueue.Peek().localPosition.z + 10 < PlayerScript.playerDistance)
{
Recycle();
}
if (Input.GetButtonDown("Jump"))
{
Vector3 garbagePosition = new Vector3(Random.Range(-4, 4),
0.5f,
PlayerScript.playerDistance + Random.Range(10, 20));
Instantiate(garbage, garbagePosition);
loadTime += Time.time;
}
}
private void Recycle()
{
Transform item = groundQueue.Dequeue();
item.localPosition = nextPosition;
nextPosition.z += item.localScale.z;
groundQueue.Enqueue(item);
}
}
ああする必要があります!私はGameObject garb = Instantiate(ガベージ)を使用して、garb.transform.position = garbagePositionを手動で設定するという解決策を見つけました。あなたの方法も機能し、正しい方法です。 – user3324792
"それはどういう意味ですか? – Programmer
あなたの編集を見ただけです。はい、これを行う別の方法です。私の答えは、あなたの問題に対処し、それを持っている理由です。 – Programmer