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

Chipmunk物理引擎中动态物体与静态物体无碰撞问题求助

Chipmunk物理引擎中动态物体与静态物体无碰撞问题求助

我肯定是漏了什么细节,但就是找不到问题所在😅

物理系统整体运行是正常的(可以看视频,绿框代表物理体),但动态物体就是无法和静态物体发生碰撞。

以下是我创建物理体和形状的相关代码:

body_ptr body{nullptr, cpBodyFree};
  std::unordered_map<bodytype, std::function<void()>> mapping = {
      {bodytype::stationary, [&body]() {
         body = body_ptr(cpBodyNewStatic(), [](cpBody *body) { cpBodyFree(body); });
       }},
      {bodytype::kinematic, [&body]() {
         body = body_ptr(cpBodyNewKinematic(), [](cpBody *body) { cpBodyFree(body); });
       }},
      {bodytype::dynamic, [&body, &size]() {
         body = body_ptr(cpBodyNew(1.0, cpMomentForBox(1.0, size.width(), size.height())), [](cpBody *body) { cpBodyFree(body); });
       }}
  };

  const auto p = j["physics"];

  mapping[p["type"].get<bodytype>()]();

  auto shape = shape_ptr(cpPolyShapeNew(body.get(), n, vertices, cpTransformIdentity, 0.0), [](cpShape *shape) { cpShapeFree(shape); });

  cpShapeSetFriction(shape.get(), p.value("friction", 0.5f));
  cpShapeSetElasticity(shape.get(), p.value("elasticity", 0.3f));
  cpSpaceAddShape(_world->space().get(), shape.get());
  cpSpaceAddBody(_world->space().get(), body.get());

有没有大佬能帮我看看我到底漏了什么?我也搜过相关问题,但找到的旧解决方案用到的函数现在已经不存在了...

备注:内容来源于stack exchange,提问作者Rodrigo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 10:14:56