c# - 在相机视图之外生成对象
问题描述
我正在开发一些小型 2D 游戏,但我无法弄清楚这一点。基本上我希望物体产生 - 但仅限于相机视图之外。相机是固定的,我可以使用硬编码值,但我不想这样做。
我尝试使用 Camera.main.orthographicSize 和 Camera.main.ViewportToWorldPoint 中的屏幕宽度和高度,但我只设法在包括相机视图内部在内的所有地方生成对象。
当前代码(评论是我正在尝试的随机方法)
public class Spawner : MonoBehaviour
{
public GameObject asteroidPrefab;
public Vector2 secondsBetweenSpawnsMinMax;
public Vector2 asteroidSizeMinMax;
private float nextSpawnTime = 0;
private Vector2 screenHalfSizeWorldUnits;
private float asteroidSpawnAngleMax;
private float screenHeight;
private float screenWidth;
void Start()
{
screenHalfSizeWorldUnits = new Vector2(Camera.main.aspect * Camera.main.orthographicSize, Camera.main.orthographicSize);
}
void Update()
{
if(Time.time > nextSpawnTime)
{
screenHeight = Camera.main.orthographicSize + 1;
screenWidth = Camera.main.orthographicSize * Camera.main.aspect + 1;
float secondsBetweenSpawns = Random.Range(secondsBetweenSpawnsMinMax.x, secondsBetweenSpawnsMinMax.y);
nextSpawnTime = Time.time + secondsBetweenSpawns;
float asteroidSize = Random.Range(asteroidSizeMinMax.x, asteroidSizeMinMax.y);
float asteroidSpawnAngle = Random.Range(-asteroidSpawnAngleMax, asteroidSpawnAngleMax);
Vector3[] arrayOfZones = new Vector3[3];
List<Vector3> listOfZones = new List<Vector3>();
Vector3 leftSpawnZone = Camera.main.ViewportToWorldPoint(Vector3.left);
Vector3 rightSpawnZone = Camera.main.ViewportToWorldPoint(Vector3.right);
Vector3 topSpawnZone = Camera.main.ViewportToWorldPoint(Vector3.up);
Vector3 downSpawnZone = Camera.main.ViewportToWorldPoint(Vector3.down);
Vector3 spawnPosition = Camera.main.ViewportToWorldPoint(new Vector3(1.1f, 0.5f, 0f));
//Vector2 spawnPosition = new Vector2(screenWidth + Random.Range(-90,30), screenHeight + Random.Range(-60,30));
//Vector2 spawnPosition = new Vector2(Random.Range(-screenWidth, screenWidth), Random.Range(screenHeight, -screenHeight) + asteroidSize);
GameObject newAsteroid = (GameObject)Instantiate(asteroidPrefab, spawnPosition, Quaternion.Euler(Vector3.forward * asteroidSpawnAngle));
newAsteroid.transform.localScale = Vector2.one * asteroidSize;
}
}
/*
}
解决方案
推荐阅读
- java - AWS Lambda connects with RDS using Spring Data JPA
- python - 如何将数据框转换并保存到csv python
- javascript - Wordpress 面包屑代码
- python - Python3 Minidom 解析标签内的数据
- reactjs - 我如何在 React Nativet 中限制 FlatLis 中的项目?
- vuejs2 - 如何将数据值放入链接
- django - 如何在 django 模型中自动赋值
- javascript - 位置:修复了不能使用 scrollIntoView()
- reactjs - 使用 React 在从 mongoDB 加载的 html 中插入 javascript
- unity3d - 为 Unity 制作动画和创建 3D 模型的软件