在 Unity C# 中创建随机落落对象
本文关键字:随机 落落 对象 创建 Unity | 更新日期: 2023-09-27 17:55:51
我开始学习Unity3D并正在开发2D游戏,但需要主菜单上的一些帮助。我有一个硬币纹理,我想在屏幕上方多次生成并掉落以创建掉落的硬币纹理。生成点应该是随机的,实体应该在从屏幕上掉下来后被摧毁,但我不知道该怎么做。任何帮助将不胜感激。谢谢
图片上传:https://i.stack.imgur.com/m1rXM.jpg
我会给你一些完成任务的起点。你可以阅读'
- RigidBody(RigidBody2D) 对撞机
- (对撞机2D)
- MonoBehavior Callbacks 例如 OnTriggerEnter(OnTriggerEnter2D) 或 OnCollisionEnter(OnCollisionEnter2D)
- 对于随机性,您可以阅读有关Random class和他的方法(如Random.randomInsideUnitCircle)的信息。
如果我是你,我会从阅读Unity的粒子系统开始。通过在编辑器中设置一些参数,它可以完全按照您的要求执行,并且非常有效。
需要考虑的一些重要参数:
- 发射器形状:您希望这是案例中的矩形,位于场景顶部。
- 初始速度:您希望它类似于向下落下的硬币的 (0,-2,0)。
- 发射率:决定新硬币的生产速度。
- 颗粒形状:硬币纹理或硬币网格或任何您想要的形状。
- 起始寿命:每个硬币的持续时间。在此时间之后,硬币将被妥善销毁。
粒子系统将自动选择发射器形状内的随机点。
创建一个带有刚性车身2d和对撞机组件的硬币预制件。创建一个空的游戏对象,将其命名为类似于 Spawner,并向其中添加脚本。(我给它起名叫Spawner)
public class Spawner : MonoBehaviour
{
[SerializeField] GameObject coinPrefab;
private float minX = -10, maxX = 10; // change it
private float timeMin = 1, timeMax = 5; // change it
void Start()
{
Invoke("SpawnCoins", Random.Range(timeMin, timeMax));
}
void SpawnCoins()
{
float randPosx = Random.Range(minX, maxX);
coinPrefab = Instantiate(coinPrefab, new Vector2(randPosx, transform.position.y), Quaternion.identity);
Invoke("SpawnCoins", Random.Range(timeMin, timeMax));
}
}
我建议您搜索每个函数的功能。查看统一手册。要在落地后销毁硬币,请尝试使用OnCollisionEnter或OnTriggerEnter功能。
同样在对上述内容有信心之后,请检查对象池。