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

Unity 2D:如何实现玩家与屏幕边缘碰撞

问题:Android 2D游戏中玩家倾斜控制时移出屏幕,碰撞边缘失败怎么解决?

我正在开发一款面向Android平台的2D游戏,场景里的玩家对象可以通过设备倾斜控制左右移动,但现在会移出屏幕的左右边缘。我尝试添加“墙体”来实现碰撞但没成功,玩家GameObject上已经加了Edge Collider。请问怎么让玩家对象和屏幕边缘产生碰撞?

我的初始代码如下:

public GameObject player; 
// Use this for initialization 
void Start () { } 
// Update is called once per frame 
void Update () { 
    Vector3 dir = Vector3.zero; 
    dir.y = Input.acceleration.x; 
    player.transform.Translate(new Vector2(dir.y, 0) * Time.deltaTime * 2000f); 
}

补充说明:我试过用屏幕边缘的墙体来解决问题,还准备了墙体和玩家的Inspector截图(此处略)。


已解决的方案

后来我找到了可行的解决方法,不需要依赖物理碰撞组件,直接通过代码限制玩家的位置范围就能实现屏幕边缘的“碰撞”效果,避免玩家移出屏幕。代码如下:

Vector3 position = player.transform.position; 
float translation = Input.acceleration.x * movementSpeed * 50f; 
if (player.transform.position.x + translation < LeftlimitScreen) { 
    position.x = LeftlimitScreen; 
} else if(player.transform.position.x + translation > RightlimitScreen) { 
    position.x = RightlimitScreen; 
} else { 
    position.x += translation; 
}
player.transform.position = position;

(注:原代码中的-LeftlimitScreen可以根据自己的场景坐标系调整为合适的左边界值,确保玩家停留在屏幕内)

这个代码已经可以正常运行了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:19:44