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

如何制作带圆角的角落Div作为吃豆人游戏的碰撞检测墙体?

解决吃豆人游戏的圆角角落墙体问题

嘿,我完全懂你要做的是什么——给吃豆人游戏做那种带圆角的角落墙体,还得保证红色可移动区域里绝对不能有Div,让角色只能在红色区活动,碰到墙体就被挡住对吧?咱们一步步来搞定这个:

首先你已经有了.wall的基础样式,现在只需要调整垂直和水平两个墙体的定位、尺寸和圆角方向,让它们刚好拼出那个圆角角落,同时完全避开红色区域。

调整后的CSS代码

div.wall {
  border: 1px solid white;
  border-radius: 1000px; /* 大数值确保圆角足够平滑 */
  background: black; /* 加上背景色,避免只有边框导致碰撞检测失效 */
}

div#bottomLeftCornerVertical {
  position: fixed;
  left: 175px;
  width: 25px;
  height: 75px;
  top: 473px;
  /* 只保留右下角的圆角,对应红色区域的圆角边缘 */
  border-radius: 0 0 1000px 0;
}

div#bottomLeftCornerHorizontal {
  position: fixed;
  left: 175px;
  width: 75px;
  height: 25px;
  top: 523px; /* 垂直墙体底部(473+75=548)减去自身高度25,刚好衔接圆角 */
  /* 只保留右上角的圆角,和垂直墙体的圆角完美拼合 */
  border-radius: 0 1000px 0 0;
}

关键细节说明

  • 背景色的必要性:给.wall加上背景色,这样整个Div区域都是碰撞检测的有效范围,不然只有边框的话,角色很可能会“穿”过墙体的空白部分。
  • 圆角精准控制:垂直墙体只保留右下角圆角,水平墙体只保留右上角圆角,两个圆角拼在一起刚好形成红色区域的圆角轮廓,红色区域里完全没有Div覆盖,符合你的要求。
  • 位置无缝衔接:水平墙体的top值是精准计算过的,确保它和垂直墙体的圆角部分完美贴合,既没有缝隙也不会重叠。

碰撞检测小技巧

因为你用Div作为墙体,碰撞检测可以通过getBoundingClientRect()方法获取墙体和角色的位置、尺寸信息,然后对比两者的边界:如果角色的边界和墙体边界有重叠,就阻止角色继续移动。这样就能保证角色无法进入墙体区域,但可以在红色圆角区域内自由活动啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:14:20