在 Unity C# 中创建随机落落对象

本文关键字:随机 落落 对象 创建 Unity | 更新日期: 2023-09-27 17:55:51

我开始学习Unity3D并正在开发2D游戏,但需要主菜单上的一些帮助。我有一个硬币纹理,我想在屏幕上方多次生成并掉落以创建掉落的硬币纹理。生成点应该是随机的,实体应该在从屏幕上掉下来后被摧毁,但我不知道该怎么做。任何帮助将不胜感激。谢谢

图片上传:https://i.stack.imgur.com/m1rXM.jpg

在 Unity C# 中创建随机落落对象

我会给你一些完成任务的起点。你可以阅读'

  1. RigidBody(RigidBody2D)
  2. 对撞机
  3. (对撞机2D)
  4. MonoBehavior Callbacks 例如 OnTriggerEnter(OnTriggerEnter2D) 或 OnCollisionEnter(OnCollisionEnter2D)
  5. 对于随机性,您可以阅读有关Random class和他的方法(如Random.randomInsideUnitCircle)的信息。

如果我是你,我会从阅读Unity的粒子系统开始。通过在编辑器中设置一些参数,它可以完全按照您的要求执行,并且非常有效。

需要考虑的一些重要参数:

  1. 发射器形状:您希望这是案例中的矩形,位于场景顶部。
  2. 初始速度:您希望它类似于向下落下的硬币的 (0,-2,0)。
  3. 发射率:决定新硬币的生产速度。
  4. 颗粒形状:硬币纹理或硬币网格或任何您想要的形状。
  5. 起始寿命:每个硬币的持续时间。在此时间之后,硬币将被妥善销毁。

粒子系统将自动选择发射器形状内的随机点。

创建一个带有刚性车身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功能。

同样在对上述内容有信心之后,请检查对象池。