刚体不移动,这是引擎的问题么?

父节点挂载一个带刚体的子节点,用挂载在父节点上的代码移动父节点,带刚体的子节点不会跟着父节点动。
如果脚本直接挂载到带刚体的子节点上,刚体能移动,这个算bug么?

demo:t1.zip (181.2 KB)
Cocos Creator版本:2.0.8,使用2.1.2也试过,也有这个问题。

刷新一下。.getComponent(cc.RigidBody).syncPosition(true);

你好,我试过,不行的。
是做的动画呢,在子节点上挂个脚本,update每帧都调用一次,依旧不行的。

不是你那么用的大哥,

可以确定static的物理节点是不会随父节点进行运行的,物理节点的位置只受物理组件控制,你可以把物理组件设置成Animated类型,然后类似这样的操作(这里是将Animated物理节点同步成rigid节点的位置的值)

update (dt) {
    this.node.x = this.rigid.x;
    this.getComponent(cc.RigidBody).syncPosition(true);
},

你这个我没有看太明白,我换了一种方法,static的也行,直接在子节点上挂在一个脚本,一开始记录自己的位置,在update里面同步这个位置,达到了想要的效果

onLoad () {
    this._pos = this.node.position;
},    

update (dt) {
    this.node.position = this._pos;
    this.getComponent(cc.RigidBody).syncPosition(true);
},

我这样实现,还是有点瑕疵,子节点的位置变化总会比父节点的位置变化慢一点点。
下图里面,运动的时候,人物往柱子右边有一点偏移,停下来就好了。

他的意思是,刚体位置等属性是受物理引擎的影响的。所以你应该把刚体的类型设置为Animated,而不是Dynamic

而且gif里面,画面滚轴不是应该用摄像机实现吗:joy:,你这是直接移动节点?

是的,如果是移动摄像机而不是移动物体,你的问题就不会出现

嗯,是通过移动节点的,我试试移动相机的。

谢谢。

Animated解决了我的问题, 谢谢