这个脚本是为Unity游戏设计的,用于管理和控制游戏对象(在此场景中为“泡泡”)的生成、动态行为(如飞出和在一定区域内随机晃动),以及在特定条件下对这些对象进行管理(如数量控制和暂停/重启生成逻辑)。以下是脚本的主要功能和组成部分的详细介绍:
核心功能
- 泡泡生成:定期在指定位置生成泡泡对象。这通过
SpawnPill
方法实现,该方法会从预设的泡泡预制体数组中随机选取一个实例化。 - 泡泡飞出:在满足特定条件(如时间间隔)时,选定的泡泡会开始飞出过程。飞出动作包括移动到指定位置(如生成点正上方0.5米处),然后以抛物线轨迹飞向另一个随机计算的目标位置。
- 泡泡行为控制:泡泡在游戏世界中的行为,如在达到特定位置后的随机晃动和自转,以增加视觉效果和动态感。
- 数量管理:当场景中存在的泡泡数量达到预定的上限时,随机销毁一定数量的泡泡,以避免性能问题。同时,还有一个功能在泡泡飞出数量达到50时,暂停生成和飞出过程,一分钟后清空记录飞出泡泡的数组,并重新启动这些过程。
- 泡泡动态效果:通过在
Update
方法中对所有生成并未飞出的泡泡应用随机方向的力,使其在葫芦内部来回晃动,减少重力影响以实现更轻盈的动态效果。
组件和方法
pillPrefabs
数组:存储可用于生成泡泡的预制体引用。spawnPoint
:指定泡泡生成的位置。pillSpawnRate
:控制泡泡生成的频率。spawnedPills
列表:记录当前生成且尚未飞出的泡泡对象。flyOutInterval
和flyOutRate
:分别控制泡泡飞出的时间间隔和飞出动作的频率。maxPillCount
和destroyCount
:用于控制场景中泡泡的最大数量和达到最大数量时一次性销毁的泡泡数量。ApplyRandomForceToPills
方法:每秒对spawnedPills
列表中的所有药丸应用一次随机方向的力,使其在葫芦内来回晃动。
实现细节
- 使用协程(
StartCoroutine
)来异步执行生成、飞出和数量管理逻辑,使得动作看起来更自然且不会阻塞主线程。 - 通过检测
Time.frameCount
或等待固定时间间隔(WaitForSeconds
)来控制事件的触发频率。 - 动态调整
Rigidbody
组件的参数,比如使用useGravity
和isKinematic
,以适应不同阶段的物理行为需求。
整个脚本展示了Unity中游戏对象的生成、动态行为控制以及基于事件的状态管理的常见模式,适用于需要在游戏中动态生成和管理对象的场景。
额外提示:
1,将鼠标放在公开变量上会有中文提示
2,美术资产只需要准备需要释放的预制体模型
3,两个预制体的具体使用(代码中有注释)
泡泡机生成+发射+漂浮效果代码