1

次の問題について、助けていただきたいです。キャラクターが走っていて、彼に向かってくる障害物を飛び越えなければならない単純なゲームを作っています。

そして、ゲームオブジェクトを作成し、実行時にゲームシーン内でそれらをランダムに生成することになると、私は現在立ち往生しています。

これを達成するのに役立つクラスを作成しました:

using UnityEngine;
using System.Collections;

public class randomObstacles : MonoBehaviour {

    public GameObject myCube;
    public Vector3 spawnLocation = new Vector3(0,2,0);

    // Use this for initialization
    void Start () {
        GameObject SpawnLocation = (GameObject)Instantiate(myCube, spawnLocation, Quaternion.identity);
    }

    // Update is called once per frame
    void Update () {

    }
}

上記のコードは、単純にオブジェクトを次々と作成するために書いたものです。しかし、ゲームを実行すると、空になります -_- !

誰でもどこが間違っているのか教えてもらえますか?それを見ると、私のコードは私が達成したいことをしていないようです:(

Unity コミュニティ フォーラムのチュートリアルで見たように、上記のスクリプトを空のゲーム オブジェクトにアタッチしましたが、それも役に立ちませんでした。(私は周りを見回しましたが、誰もそのような問題に遭遇していないようです-私は間違っている可能性があります)

4

3 に答える 3

7

メソッドでオブジェクトを作成していることを指摘する価値があるかもしれません。Startつまり、コードは 1 回だけ実行されます。クラスの名前から、このコードを使用して複数のオブジェクトを作成する必要があると思います。

コードを に移動すると、フレームUpdateごとに 1 つのオブジェクトが作成されますが、これは多すぎる可能性があります。私の推測では、ランダムな間隔で実行され、時間の経過とともに繰り返しキューブを生成するコルーチンのようなものが必要になるでしょう。次のようなものです。

void Start () {
    StartCoroutine("SpawnObjects");
}

IEnumerator SpawnObjects()
{
    while (keepAddingObjects) // a boolean - could just be "true" or could be controlled elsewhere
    {
        GameObject SpawnLocation = (GameObject)Instantiate(myCube, spawnLocation, Quaternion.identity);
        float delay = Random.Range(1f, 5f); // adjust this to set frequency of obstacles
        yield return new WaitForSeconds(delay);
    }
}
于 2013-04-24T07:04:12.403 に答える