如何在游戏中随处产生/实例化一个对象? C#

时间:2017-05-21 04:45:01

标签: c# unity3d unity5

所以我应该尝试在2D c#中捕捉一个对象游戏,在那里我想用我的玩家对象捕捉落下的物体。所以我所做的是创建一个空游戏对象并添加一个脚本,它可以产生一个下降的对象,问题是我不知道如何在每2-3秒左右在一个随机的地方产生它。

所以这是我的代码和游戏视图。

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;
}


}

在我希望它随机产生的行上方

above the line where I want it to randomly spawn

1 个答案:

答案 0 :(得分:2)

到目前为止,您已经掌握了基本想法。

第一步是开始使用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),然后使用min和max作为可以删除的最外层参数。

例如:

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


<小时/> 我在没有IDE的情况下编写了这个,因此某处可能存在语法错误。