【问题标题】:How can i spawn Objects randomly in a given area?如何在给定区域随机生成对象?
【发布时间】:2021-03-31 16:08:38
【问题描述】:

所以我正在构建一个小型 Bulletgell 游戏,并且我希望敌人在给定区域的随机 Spawnpoints 中生成。我在 BoxCollider2D 的帮助下做到了这一点,一切正常,但我希望它们在实际地图之外生成,因此他们需要在玩家所在的地图和屏幕中行走。我可以在整个 BoxCollider 中生成它们。有没有办法确定 SpawnScript 可以使用哪个区域?

图中红色标记的区域应该是敌人随机生成的区域。

感谢您的帮助:)

这是我使用 atm 的代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class box : MonoBehaviour
{
public GameObject spawnedPrefab;
public BoxCollider2D spawnArea;
Vector2 maxSpawnPos;

float lastSpawnTimeS = -1;
public float spawnDelayS = 5;

// Use this for initialization
void Start()
{
    spawnArea = GetComponent<BoxCollider2D>();
    spawnArea.enabled = false; 
    maxSpawnPos = new Vector2(spawnArea.size.x / 2, spawnArea.size.y / 2);
}

// Update is called once per frame
void Update()
{
    if (lastSpawnTimeS < 0)
    {
        lastSpawnTimeS = Time.time;
        GameObject spawned = Instantiate(spawnedPrefab, Vector3.zero, Quaternion.identity) as GameObject;
        spawned.transform.parent = transform;
        Vector3 pos = new Vector3(Random.Range(-maxSpawnPos.x, maxSpawnPos.x), Random.Range(-maxSpawnPos.y, maxSpawnPos.y), 0);
        spawned.transform.localPosition = pos;
    }
    else if (lastSpawnTimeS >= 0 && Time.time - lastSpawnTimeS > spawnDelayS)
    {
        lastSpawnTimeS = -1;
    }
}

}

【问题讨论】:

    标签: c# unity3d spawning


    【解决方案1】:

    如果对象试图离开生成区域,它会将其重置为零。如果对象放置在零处,您也可以放置 if 条件,在区域内添加一些随机位置。

    if (lastSpawnTimeS < 0)
    {
        lastSpawnTimeS = Time.time;
        GameObject spawned = Instantiate(spawnedPrefab, Vector3.zero, Quaternion.identity) as GameObject;
        spawned.transform.parent = transform;
        Vector3 pos = new Vector3(Random.Range(-maxSpawnPos.x, maxSpawnPos.x) % spawnArea.size.x, Random.Range(-maxSpawnPos.y, maxSpawnPos.y) % spawnArea.size.y, 0);
        spawned.transform.localPosition = pos;
    }
    else if (lastSpawnTimeS >= 0 && Time.time - lastSpawnTimeS > spawnDelayS)
    {
        lastSpawnTimeS = -1;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-13
      • 2015-12-02
      • 2011-11-15
      • 2014-05-13
      • 1970-01-01
      • 2019-08-02
      • 1970-01-01
      相关资源
      最近更新 更多