linearVelocity线性速度与实际位移差别很大

代码如下,想让这个节点以每帧10像素向右移动
export class rigid2d extends Component {

start() {

   

    PhysicsSystem2D.instance.enable = true;

    let rigid_comp = this.node.getComponent(RigidBody2D);

    rigid_comp.linearVelocity = v2(10, 0);

}

duration: number = 0;

protected update(dt: number): void {

    console.log(this.node.getWorldPosition().x);

}

}

打印结果如下:
480
485.3333435058594
490.66668701171875
496.0000305175781
501.3333740234375
506.6667175292969

实际每一帧位移约等于5.3333

,为什么出现实际移动不是10,明明一定是10的

好像跟帧率有关系吧

那如果我想让一个物体通过线性速度的方式,让它每秒移动100个像素,应该怎么设置线性速度呢?

如果在update里写的话 要*dt

原来如此,谢谢:pray:

刚仔细看了下。10表示的是10米/秒, PHYSICS_2D_PTM_RATIO是32(即1米=32像素),所以这10米=320像素,1秒是60帧,所以每帧移动320/60=5.3333像素。不过每帧可能不是固定的时间,可能会在这个数值浮动。

3赞

兄弟你这研究的透彻啊 :100:

物理引擎的帧时间是固定的逻辑的帧时间是变化的