2017-05-21 14 views
1

だから、私はプレーヤーのオブジェクトで落ちているオブジェクトを捕捉したい2D C#でオブジェクトゲームをキャッチすることを練習しようとしています。だから、私がしたのは、空のGameObjectを作成し、それにスクリプトを追加して落下するオブジェクトを生成することができます。問題は2〜3秒ごとにランダムな場所にスポーンする方法がわかりません。ゲーム内でオブジェクトをランダムに生成/インスタンス化する方法はありますか? c#

ここに私のコードとゲームのビューがあります。私はあなたがこれまでの基本的な考え方を持っている

above the line where I want it to randomly spawn

答えて

2

それがランダムに出現する行以上

public class spawnball : MonoBehaviour { 

public GameObject ballprefab; 
GameObject ballclone; 




// Use this for initialization 
void Start() { 

} 

// Update is called once per frame 
void Update() { 
    if (Input.GetMouseButtonDown(0)) { 

     spawn(); 
     Destroy (ballclone,3); 

    } 
} 

void spawn() 
{ 
    ballclone = Instantiate (ballprefab,transform.position,Quaternion.identity)as GameObject; 
} 


} 

最初のステップは、Time.deltaTimeを使用して、ボールを最後に作成してからどれぐらいの時間が経過しているかを調べることです。

例は次のようになります。

private timeSinceLastDrop: float; 
private dropInterval: float = 3f; 

void Update(){ 
    // have we surpassed our interval? 
    if(timeSinceLastDrop >= dropInterval){ 
     this.spawn(); 
     timeSinceLastDrop = 0; 
    } 
    else 
     timeSinceLastDrop += Time.deltaTime; 
} 

ドロップする場所の第二の問題を満たすために、あなたはRandom.Range(min, max)を使用して、あなたがドロップすることができ、最も外側のパラメータとして、最小値と最大値を使用することができます。例えば

void spawn(){ 
    ballclone = Instantiate(ballprefab,transform.position,Quaternion.identity)as GameObject; 
    ballclone.transform.position.x += Random.Range(-10f, 10f); 
} 



どこかに構文エラーがあるかもしれないので、私はIDEなしでこれを書いています。

+0

ここでは、C#ではなくUnityScriptを使用していますが、マイナーな変換が必要です(変数宣言)。さもなければ、それはコンパイルされるように見えます。 – Draco18s

+0

@ Draco18s私は100%あなたに同意します。私は正直言って、人々が統一のためにC#にタグをつけたとき、それはユニティスクリプトを意味すると仮定します。 – Zze

+0

Unityは両方のためにコンパイルします(そしてBoo、ただし正直言って、誰もBooを使用しません)。そのため、仮定は真ではないかもしれません。 – Draco18s

関連する問題