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

Unity 2D开发求助:敌人相机侧移入与苍蝇拍制作及移动问题

Unity 2D俯视角苍蝇躲避游戏问题解决方案

1. 实现敌人从相机侧边进入并行走

  • 先计算相机的世界边界:
    用相机的正交尺寸和宽高比算出左右上下范围:
    float cameraHalfWidth = Camera.main.orthographicSize * Camera.main.aspect;
    float leftBound = Camera.main.transform.position.x - cameraHalfWidth;
    float rightBound = Camera.main.transform.position.x + cameraHalfWidth;
    float topBound = Camera.main.transform.position.y + Camera.main.orthographicSize;
    float bottomBound = Camera.main.transform.position.y - Camera.main.orthographicSize;
    
  • 生成敌人时,将其放在相机侧边外的位置:比如随机选左侧(x = leftBound - 1)或右侧(x = rightBound + 1),y坐标在bottomBound到topBound之间随机取值。
  • 移动逻辑:给敌人添加Rigidbody2D并设为Kinematic(避免物理干扰),在Update方法里控制移动:
    public float moveSpeed = 2f;
    void Update() {
        transform.Translate(Vector2.left * moveSpeed * Time.deltaTime);
        // 移出相机范围后销毁对象
        if (transform.position.x < leftBound - 2) Destroy(gameObject);
    }
    

2. 制作苍蝇拍并添加Collider 2D组件

  • 把苍蝇拍的Sprite拖入场景生成GameObject。
  • 若无法添加Collider 2D,先排查:是否误加了3D Collider组件(如Box Collider),删除即可;确认Sprite的Texture Type设置为Sprite (2D and UI)。
  • 推荐添加Polygon Collider 2D:添加后Unity会自动根据Sprite轮廓生成碰撞体,轮廓不准时可手动拖动顶点调整。新手也可以用Box Collider 2D,直接调整大小贴合苍蝇拍。
  • 给苍蝇拍添加Rigidbody2D,将Body Type设为Kinematic,避免受重力影响,方便控制移动。

3. 让苍蝇拍从相机侧边出现并向背景方向移动

  • 按问题1的方法算出相机边界,确定初始生成位置:比如从左侧外(x = leftBound - 2)生成,y坐标在屏幕范围内随机。
  • 若“背景方向”指2D场景的后方(z轴方向,控制层级),移动逻辑如下:
    public float moveSpeed = 3f;
    void Update() {
        // 向z轴负方向移动,远离相机进入背景
        transform.Translate(Vector3.back * moveSpeed * Time.deltaTime);
        // 移出相机视野后销毁
        if (Camera.main.WorldToViewportPoint(transform.position).z < 0) Destroy(gameObject);
    }
    
  • 如果是指平面内的背景方向(比如向地面方向,假设y轴向上),把Vector3.back替换为Vector2.down即可。

内容的提问来源于stack exchange,提问作者Hjsasdasasfdfd dasdasdadas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 16:42:44