可调整画布中玩家Y位置异常:全屏模式下超出屏幕
修复全屏模式下玩家超出屏幕的问题
问题根源
全屏时你用的位置计算逻辑没适配canvas的实际可用高度——比如误把windowHeight(含浏览器工具栏)当成了canvas的高度,或者没给玩家Y轴加边界限制,导致窗口过高时玩家跑出画布。
具体修复方案
- 改用p5内置的
height变量做高度参考:height是canvas当前的真实绘制高度,全屏时不会受浏览器UI干扰,所有和垂直位置相关的计算都用它,别用windowHeight。 - 给玩家Y轴加强制边界锁:每次更新玩家位置后,用
constrain()函数把Y坐标限制在合法范围内。假设玩家高度是playerSize,代码示例:player.y = constrain(player.y, 0, height - playerSize); - 同步更新resize事件里的边界值:如果你的画布支持动态缩放,在
windowResized()里重新计算最大Y值:function windowResized() { resizeCanvas(windowWidth, windowHeight); // 重新设置玩家可到达的最低Y坐标 playerMaxY = height - playerSize; } - 初始位置用动态居中:别给玩家设固定Y值,改成基于
height的动态计算,比如:player.y = height / 2 - playerSize / 2;
验证方式
改完后切全屏,把窗口拉到最高,检查玩家是否始终卡在画布底部,不会超出。
内容的提问来源于stack exchange,提问作者Voxel
相关产品推荐
相关产品推荐

