【求助】如何动态更新BoxCollider3D所在的位置 有demo

  • Creator 版本:2.3.0

  • 目标平台: web

  • 详细报错信息,包含调用堆栈:

  • 重现方式:

  • 之前哪个版本是正常的 :

  • 手机型号 :

  • 手机浏览器 :

  • 编辑器操作系统 :

  • 编辑器之前是否有其它报错 :

  • 出现概率:

  • 额外线索:

cc2.3.0里面动态创建带有BoxCollider3D组件的节点,怎么让BoxCollider3D的区域跟着父节点的坐标移动而移动?目前所知道的是BoxCollider3D的区域在添加到父节点的时候就已经固定了,后面父节点位置改变的时候,响应区域并不会改变。
BoxCollider3D组件添加在 prefab 的根节点,网格等资源是子节点。

在动态创建的时候是先设置的 position 再设置的 parent。

这是动态创建代码:
let card = cc.instantiate(this.cardPre); let x = beginPosX + k * 0.75; card.setPosition(x, card.position.y, card.position.z); this.handCardNode.addChild(card);

这是检测到碰撞后改变坐标的代码:
/** 射线检测 */ radiographicInspection(wP) { const ray = this.camera.getRay(wP); const r = cc.director.getPhysics3DManager().raycast(ray,'HandCard', 1000, false); cc.log(r); if (r) { let checkNode = r[0].collider.node; checkNode.setPosition(checkNode.x, checkNode.y, -0.4); } }

想要达到的效果是 BoxCollider3D 的区域也跟着父节点的坐标变化而一起改变。

demo.zip (277.5 KB)

你是做3d麻将或者斗地主吧?并没有办法用你那个办法解决问题,你可以换一个思路,把碰撞组件和渲染部分分开,不需要当成一个整体去做,你的操作控制的只是碰撞体的位置,射线检测点中碰撞体后你去设置碰撞体的坐标,然后刷新渲染体的位置,把坐标设置成和碰撞体一样的

谢谢,我去试试