You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity开发教程:如何在不同Y轴高度生成障碍物

Unity 类FlappyBird模块化管道生成实现

这套实现完全解耦,所有参数支持可视化配置,不需要硬改代码就能适配不同项目需求,直接对接你已经制作完成的管道资源即可。

核心特性

  • 支持自定义管道生成点位、Y轴随机高度范围、生成间隔、移动速度
  • 自动销毁超出屏幕的管道,无多余内存占用
  • 逻辑拆分清晰,后续扩展管道样式随机、间隙动态调整等功能不需要重构核心代码

具体实现

1. 管道单体控制脚本

将以下脚本挂载到你制作好的管道预制体上,负责管道的移动和出屏销毁:

using UnityEngine;

public class Pipe : MonoBehaviour
{
    [HideInInspector] public float moveSpeed;
    private float _destroyBoundary;

    void Start()
    {
        // 自动计算销毁边界:相机左边界外1单位,避免管道在可视范围内消失
        _destroyBoundary = Camera.main.ScreenToWorldPoint(Vector3.zero).x - 1f;
    }

    void Update()
    {
        transform.Translate(Vector3.left * moveSpeed * Time.deltaTime);
        if (transform.position.x < _destroyBoundary)
        {
            Destroy(gameObject);
        }
    }
}

2. 管道生成器脚本

在场景中新建一个空物体,将以下脚本挂载到这个空物体上,负责按规则定时生成管道:

using UnityEngine;

public class PipeSpawner : MonoBehaviour
{
    [Header("基础参数")]
    public Pipe pipePrefab;
    public float spawnInterval = 2f;
    public float pipeMoveSpeed = 2f;

    [Header("生成范围")]
    public float minYPosition = -1.5f;
    public float maxYPosition = 2.5f;

    private float _timer;

    void Start()
    {
        SpawnSinglePipe();
        _timer = spawnInterval;
    }

    void Update()
    {
        _timer -= Time.deltaTime;
        if (_timer <= 0)
        {
            SpawnSinglePipe();
            _timer = spawnInterval;
        }
    }

    void SpawnSinglePipe()
    {
        float randomY = Random.Range(minYPosition, maxYPosition);
        Vector3 spawnPos = new Vector3(transform.position.x, randomY, transform.position.z);
        Pipe spawnedPipe = Instantiate(pipePrefab, spawnPos, Quaternion.identity);
        spawnedPipe.moveSpeed = pipeMoveSpeed;
    }
}

使用配置方法

  • 将你做好的管道预制体拖到PipeSpawner组件的pipePrefab字段中,确认预制体已经挂载Pipe脚本
  • 调整挂载PipeSpawner的空物体的X轴坐标,这个坐标就是管道的固定生成点位,一般设置在相机右边界外1-2个单位的位置,避免管道生成过程被玩家看到
  • 直接在Inspector面板调整所有参数即可适配你的项目:生成间隔越短、管道速度越快,游戏难度越高;Y轴范围根据你的管道间隙大小调整,保证上下留出足够的通行空间
  • 如果需要扩展功能,比如随机生成不同样式的管道、动态调整管道间隙、随游戏进程提升速度,直接在对应脚本里新增逻辑即可,不会影响现有核心逻辑

内容的提问来源于stack exchange,提问作者Trevil Devil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 02:36:15