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
相关产品推荐
相关产品推荐

