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

Matter.js中如何仅为矩形的两个顶角设置倒角?

Matter.js 矩形仅顶部两角加倒角实现方案

默认调用Bodies.rectangle(x, y, w, h, { chamfer: 5 })会给四个角统一加倒角,要实现仅左上角、右上角加倒角、底部保留直角,可以用以下两种方案:

  • 方案1:手动指定顶点倒角半径(推荐,改动最小)
    Matter.js 内置的Chamfer模块支持按顶点索引单独设置倒角半径,不需要重新定义形状。
    首先创建不带chamfer配置的基础矩形,默认生成的矩形顶点按顺时针顺序为:0=左上角、1=右上角、2=右下角、3=左下角,调用Matter.Chamfer.chamfer给前两个顶点设置倒角半径、后两个顶点设为0(即直角)即可:
    // 创建无倒角的基础矩形,其余物理参数正常配置
    const rect = Matter.Bodies.rectangle(x, y, w, h, {
      restitution: 0.1,
      friction: 0.5
      // 不要在这里写chamfer参数
    })
    
    // 按顶点顺序传入倒角半径:左上5、右上5、右下0、左下0
    Matter.Chamfer.chamfer(rect, [5, 5, 0, 0])
    
    // 后续正常将rect加入世界即可
    // Matter.Composite.add(engine.world, rect)
    
    如果需要调整倒角平滑度,可以传入第三个参数设置倒角分段数,数值越大倒角越圆滑,默认自动计算:
    // 倒角分段数设为12,平滑度更高
    Matter.Chamfer.chamfer(rect, [5, 5, 0, 0], 12)
    
  • 方案2:自定义顶点生成刚体(适合异形形状扩展场景)
    如果需要更灵活的形状控制,可以直接用Bodies.fromVertices定义轮廓顶点,再针对性加倒角:
    const chamferR = 5
    const halfW = w / 2
    const halfH = h / 2
    
    // 以矩形中心(x,y)为基准,按顺时针顺序定义轮廓顶点
    const vertices = [
      { x: x - halfW + chamferR, y: y - halfH },
      { x: x + halfW - chamferR, y: y - halfH },
      { x: x + halfW, y: y - halfH + chamferR },
      { x: x + halfW, y: y + halfH },
      { x: x - halfW, y: y + halfH },
      { x: x - halfW, y: y - halfH + chamferR }
    ]
    
    const rect = Matter.Bodies.fromVertices(x, y, [vertices], {
      chamfer: [chamferR, chamferR, 0, 0, 0, 0]
      // 其余物理参数正常配置
    })
    

提示:如果不确定顶点索引对应的角,可以先打印刚体的vertices属性,根据每个顶点的x、y坐标确认对应位置后再设置倒角半径。调用Matter.Chamfer.chamfer后会自动更新刚体的碰撞体、包围盒数据,不需要手动执行其他更新操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 04:06:07