【CocosCreator3.x】物理速度和像素转换

原文文档

一般物理模块(Box2D)都是使用 米 - 千克 - 秒(MKS) 单位制,Box2D 在这样的单位制下运算的表现是最佳的。但是我们在 2D 游戏运算中一般使用 世界坐标系中的单位(简称世界单位)来作为长度单位制,所以我们需要一个比率来进行物理单位到世界单位上的相互转换。
一般情况下我们把这个比率设置为 32,这个值可以通过 PHYSICS_2D_PTM_RATIO 获取,并且这个值是只读的。通常用户是不需要关心这个值的,物理系统内部会自动对物理单位与世界单位进行转换,用户访问和设置的都是进行 2d 游戏开发中所熟悉的世界单位。
——物理单位到世界坐标系单位的转换 | CocosCreator3.x文档

验证代码

import { _decorator, Component, Node, RigidBody2D, Vec2 } from 'cc';
const { ccclass, property, requireComponent } = _decorator;

/**
 * 物理示例
 */
@ccclass('PyhsicsExample')
export class PyhsicsExample extends Component {
    /** 本身节点 */
    @property(Node)
    selfNode: Node;

    @property(RigidBody2D)
    rigidBody: RigidBody2D;

    start() {
        // 开始时间
        let startTime = new Date();
        // 输出初始位置
        console.log(JSON.stringify({startPosition: this.selfNode.getPosition()}));
        // 间隔输出
        setInterval(() => {
            // 输出当前位置
            console.log(JSON.stringify({duration:  new Date().getTime() - startTime.getTime(), curPosition: this.selfNode.getPosition()}));
            // 直接设置线性速度
            this.rigidBody.linearVelocity = new Vec2(0,1);
        }, 1000);
    }
}

验证结果
验证结果
可以看到当刚体速度为1m/s的时候,curPosition每秒的差值为32,也就是32px/s。结论得证。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值