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

