Box2D 中的 PTM_RATIO

手把手教你使用PhysicsEditor来辅助制作Box2D刚体 Box2D中使用PhysicsEditor来辅助制作不规则形状的刚体 阅读详情

原文链接:http://blog.youkuaiyun.com/zhangxaochen/article/details/8009508

根据box2d 的帮助文档:


1.7 Units

Box2D works with floating point numbers and tolerances have to be used to make Box2D perform well.These tolerances have been tuned to work well withmeters-kilogram-second (MKS) units. In particular, Box2D has been tuned to work well with moving objects between 0.1 and 10meters. So this means objects between soup cans and buses in size should work well. Static objects may be up to 50meters big without too much trouble.

Being a 2D physics engine, it is tempting to use pixels as your units. Unfortunately this will lead to a poor simulation and possibly weird behavior. An object of length 200 pixels would be seen by Box2D as the size of a 45 story building.

box2d 使用MKS: 米-千克-秒 单位制,因为文档称他的浮点运算在这样的单位下表现最佳。

一般情况下,我们希望将屏幕比如 480*320 映射为10米见方左右,那么习惯上设置的 像素-米 比率为 32,即#define PTM_RATIO 32 【PTM: pixel to meter】,那么我们便将屏幕映射到了 15m*10m 这样的小世界里去。

我们可以很快接受这个概念。但是,昨天我突然有一个奇怪的念头:

box2d 怎么知道我的 ptm_ratio 多大?或者说,为什么无论 PTM_RATIO 设为32 还是64, 为什么那个 groundBox 外边框总是能充满屏幕呢?

想了很久才明白,事实上,box2d 从来不知道也不在乎 PTM_RATIO 的大小。 这个物理引擎就想一个瞎了眼的数学高手,一直在算啊算,但是他并不负责图形的呈现。是我们写的cocos2d 的代码调用了openGles去做的绘制的工作。

如果我们设定 #define PTM_RATIO 32 那么屏幕被映射为 15*10 平米,而呈现——即,把米换为屏幕坐标的时候,一般都会做 ‘某坐标*PRM_RATIO’ 的工作,意思就是,放大32倍画在屏幕上。

如果 #define PTM_RATIO 64的话,尽管屏幕被映射为 7.5*5 平米的世界,似乎小了(物理世界确实小了),但是绘制的时候,因为我们对cocos2d 说:“给我放大64倍画出来”,所以看起来 groundBox 外框仍然充满屏幕。。。

就是这样。

原文链接:http://blog.youkuaiyun.com/zhangxaochen/article/details/8009508

{{OVER}}

Cocos2d-x 4.0实战:从零构建物理交互式抓娃娃机游戏 游戏开发中,物理引擎是实现真实交互体验的核心技术,它通过模拟刚体运动、碰撞检测与关节连接等物理原理,为游戏世界赋予真实的动力学反馈。在2D游戏开发领域,Box2D作为成熟的物理引擎,常被集成用于处理复杂的物体交互。其技术价值在于能够以高效的方式模拟重力、碰撞、摩擦力等物理现象,极大地增强了游戏的可玩性和沉浸感。典型的应用场景包括平台跳跃、弹珠台、以及需要模拟抓取、堆叠等物理行为的游戏。本文以Cocos2d-x 4.0引擎为基础,结合状态机设计模式,详细解析如何利用其集成的物理系统,构建一个核心玩法围绕物理抓 阅读详情

相关推荐

Cocos2d游戏物理引擎集成:Box2D核心概念与实战优化指南

在2D游戏开发中,物理引擎是实现真实交互体验的核心组件,它基于牛顿力学原理模拟物体运动、碰撞与受力。其技术价值在于将复杂的物理计算封装成易用接口,让开发者能专注于游戏逻辑,从而高效创建如《愤怒的小鸟》般具有丰富物理效果的游戏。物理引擎通过刚体、关节、碰撞检测等机制,广泛应用于角色控制、场景互动、机关解谜等场景。本文聚焦于将经典物理引擎Box2D集成到Cocos2d游戏框架中,深入解析刚体与精灵的同步、碰撞过滤及性能优化等实战技巧,帮助开发者解决常见的精灵抖动、碰撞回调失效等问题,并有效管理内存与对象生命周期

weixin_27943395的博客 274

Box2D 的 PTM_RATIO

原文链接:http://blog.csdn.net/zhangxaochen/article/details/8009508 根据box2d 的帮助文档: 1.7 Units Box2D works with floating point numbers and tolerances have to be used to make Box2D perform well.The

zhangxaochen的专栏 6361

33、游戏物理引擎:Box2D与Chipmunk的使用指南

本文详细介绍了游戏开发中常用的物理引擎Box2D和Chipmunk的使用方法。内容涵盖基础设置、物体添加、世界更新、碰撞检测、关节连接等核心知识点,并对两个引擎的特点、内存管理、结构体使用等方面进行了对比。通过实例代码和具体操作流程,帮助开发者快速掌握物理引擎的集成与应用,提升游戏的真实感和交互体验。此外,还总结了常见问题的解决方法以及性能优化技巧,为游戏开发者提供全面的参考指南。

q9w8e7r6t5的博客 60

第七章 物理引擎

第七章 物理引擎 大家对下面几款非常流行的游戏一定是耳熟能详,如”愤怒的小鸟”,”超级火柴人高尔夫”,”神仙道”。它们背后都是靠物理引擎驱动的。 Cocos2d用来描述二维世界,cocos2d支持Box2d和chipmunk,Box2d是用C++写的,chipmunk是用c语言写的,相对而言,Box2d更流行一些,因此本书主要接受Box2d,对chipmunk只稍作介绍。有兴趣的同学可以自

我就是小伟哥的专栏 5059

MODIS 遥感数据批量下载(使用Cygwin)

MODIS 遥感数据批量下载(使用Cygwin)包含Cygwin的下载教程

weixin_45913084的博客 916

别再到处找了!2024最新银河麒麟V10全版本(飞腾/龙芯/兆芯)官方下载与安装保姆级教程

本文提供2024年银河麒麟V10操作系统全版本(飞腾/龙芯/兆芯)的官方下载与安装保姆级教程,涵盖版本选择、镜像获取、启动盘制作及安装优化等关键步骤,助您高效部署国产操作系统。

weixin_26846533的博客 481

BOX2D物理引擎

头文件#include "Box2D/Box2D.h"//引入使用Box2D引擎需要头文件#include "extensions/cocos-ext.h"USING_NS_CC_EXT;#ifndef Box2DTest_hpp#define Box2DTest_hpp#include <stdio.h>#include <iostream>using namespace...

破茧而出 666

经纬度转换为UTM坐标

UTM(通用横向墨卡托投影): 是一种以米为单位的坐标系统,用于地图和GPS导航。将地球划分为60个纵向的区域。每个区域宽6度,从赤道开始往南北两级方向划分。每个区域都有一个特定的字母。

weixin_45626706的博客 7275

cocos2d-x中使用box2d时的PTM_RATIO

cocos2d-x中使用box2d时的PTM_RATIO定义成多少和box2d本身的特性有关。别人已经解释的很清楚了: http://www.raywenderlich.com/28602/intro-to-box2d-with-cocos2d-2-x-tutorial-bouncing-balls 以下是其中重点部分的摘录: #define PTM_

一步步 1673

Masta调用Geometry Modeller(Space Claim)进行根据三维模型快速建模设置方法

masta中调用ANSYS的space claim的设置方法

xifegnlie的博客 240

07 Zabbix 微信告警

Zabbix 微信告警 1.注册企业微信 企业微信注册地址:https://work.weixin.qq.com 2.进入企业微信后台管理 2.1 添加微信成员 2.2创建应用 2.3 获取四项数据 (1)AgentID (2) Secret (3) 企业ID (4)部门ID 3.Zabbix Server配置 3.1确认脚本目录 # grep alertscripts /etc/zabbix/zabbix_server....

Jian Sun_的博客 1297

关于box2d的缩放问题

box2d原生是没有缩放选项的 但是遇到屏幕适配问题的时候sprite难免需要做缩放操作 研究了半天,总算有个解决方法。 物理数据源是用PhysicsEditor生成的,里面有一个PTM_Ratio选项,也就是像素/米比率 这个属性主要应用于对形状的描述,一般在程序里面使用时,通过box2d获取到对象的位置以旋转角度。 位置属性需要乘以PTM_Ratio从物理空间转换到像素空间。 如果

1285

​热电偶测温电路图(一)​

高精度热电偶测温电路图 此设计概括了提供传感器诊断所必需的抗混叠滤波器和偏置电阻器。此示例还提供了一种新颖的方式,即使用ADS1118上的板载温度传感器完成对系统的冷端补偿。对于热电偶线性化,此设计还提供了一种非常简单的、可以在大多数微控制器上实施的线性算法。 缺点就是太贵。 特性 测量K型热电偶温度 精度1°C 高精度/可重复性0.2°C 包含冷端补偿 包含软件算法 使用ADS111816位ADC(带PGA) 原理图/方框图 热电偶测温电路图(二) OP07构成的高稳定热电

zxm8513优快云博客 2万+

Cocos2d学习之路五(Box2d使用CCPhysicsSprite时编译不通过解决方法)

cocos2d使用box2d引擎,在使用CCPhysicsSprite添加精灵的时候会出现编译不通过错误。 需要注意以下几点: 1.sprite.position=ccp(p.x,p.y);这行代码一定要在[sprite setB2Body:body];之后。否则编译不通过。 2.不要忘记添加[sprite setPTMRatio:PTM_RATIO]; 这行代码也要在setPos

Lves Li的专栏 1860

DeerFlow 系列教程 第二十篇 | 前端定制与二次开发指南

支持的语言定义在locale.tsLocale 检测采用三级降级策略Cookie 优先:检查localeCookie浏览器语言默认值en-US.value;if (locale!DeerFlow 使用管理主题切换,在根布局中通过主题相关的 CSS 变量定义在中(约 10KB)。: boolean;// 是否支持深度思考。

weixin_43674738的博客 221

Spring AI从入门到精通:构建智能Spring应用的全面指南

随着人工智能技术的快速发展,将大语言模型(LLM)与企业应用集成已成为趋势。Spring AI作为Spring官方推出的AI集成框架,为开发者提供了便捷、标准化的方式来构建智能应用。本文将从基础概念到高级应用,全面介绍Spring AI的核心功能与实践技巧。Spring AI 是 VMware 于 2023 年推出的开源框架,旨在简化大语言模型(LLM)与 Spring 应用的集成。它提供了统一的 API 抽象,支持多种 LLM 供应商,包括 OpenAI、Azure OpenAI、Hugging Face

qq_36929638的博客 1067

学习 Box2D 个人笔记(二)b2body .

上帝创造世界用了七天: 第一天   要有光,便有了光,把光明,黑夜分开,便有了昼夜; 第二天  有了天; 第三天   有了海和陆地,陆地是绿的; 第四天   有了太阳,月亮,和星星; 第五天   水中,空中有了生物; 第六天   陆地上有了生物; 第七天   有了人;   插了一个插曲。 上篇说完了创造一个世界,这次我们便在这个世界里加物体。     首先创造一个物体(注

这两天写代码一直听Vincent 5193

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

cocos2dx box2d 添加debugDraw

1.首先我们需要拷贝 GLES-Render.cpp GLES-Render.h到我们工作的目录, 这个两个文件可以在coco2d-x的示例代码中的tests\Box2DTestBed中可以找到。 2.你的layer里面添加 GLESDebugDraw *debugDraw; 并且重写layer的draw方法 init方法里面 debugDraw = new GLE

ym19860303的专栏 2946

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

开启BOX2D引擎的调试绘图功能

  在最新的3.X版本中,引擎整合了物理引擎,提供了更为方便的接口,包括了调试绘图,它是一个世界对象的接口——setDebugDrawMask(int mask),参数一般用DEBUGDRAW_ALL就可以了。那么怎么获得一个世界对象呢?通常使用scene的getPhysicsWorld 接口就可以了。   以下是之前写的在2.x版本下的开启方法,很显然,麻烦得多,感觉可以弃用了。   在做物...

weixin_30724853的博客 178

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Box2d:1-Setup

Listing 12–2. Initializing the Box2D World b2Vec2 gravity = b2Vec2(0.0f, -10.0f); bool allowBodiesToSleep = true; world = new b2World(gravity, allowBodiesToSleep);  -(void) dealloc{

欧阳天涵的专栏 1016

cocos2d-x中使用box2d物理引擎时,开启debugDraw的方法

开启debugDraw就是让物理引擎控制的世界变得可以看见,比如一个刚体,如果没有将它和某个精灵绑定,那么它是不可见的;如果你想看到它的位置大小,以便直接的观察它和其他元素之间的碰撞等物理效果,那么开启debugDraw可以让它的轮廓变得可见。 网上搜了一些答案,但是一直没有搞出来,主要是 1、答案是对应Cocos2d-x旧版本的,2、没有讲清楚某些宏或头文件的引用 3、方法确实是错的,可能过时

u014131398的专栏 1294

Cocos2d使用Box2d做碰撞处理

在Cocos2d下已经留下了Box2d的接口,使用Box2d来做碰撞检测非

夏花秋叶☂ 1975

cocos2d-x下box2d debug模式

首先我们需要拷贝GLES-Render.cpp,GLES-Render.h到我们工作的目录, 这个两个文件可以在coco2d-x的示例代码中的tests\Box2DTestBed中可以找到。我是在ubuntu下写的,要在mk文件中添加这个CPP文件才能编译使用。 #ifndef __BOX_LAYER_H__   #define __BOX_LAYER_H__   #inclu

Let_G0的专栏 1947

Cocos2d-x Box2D debugDraw

高人就谈不上了,最近开始学cocos2d-x,前天刚刚做了个东西,正好需要加入debugDraw,和你分享下经验吧 1 cocos2d中testcpp->box2dTestBed文件夹,下面有GLES-Render.h/GLES-Render.cpp,这两个文件先要拷到你的项目中 2 在你的helloworldscene.h中创建  GLESDebugDraw *m_DebugDraw 对象 

calvin367的专栏 788

Box2d CreateFixture 发生错误 Debug Error:R6025 pure virtual function call 解决办法

发生该错误的原因是出在ShapeDef.shape上,在创建shape的时候不要将它创建在和ShapeDef同级的域当中,例如下面的写法就会引发异常: b2FixtureDef boxDef; if (isCircle) { b2CircleShape circle; circle.m_radius = sprite->getContentSiz

hzl877243276的专栏 2227
上一篇: cocos2d-x 显示中文字符
下一篇: Cocos2d-x Touch事件处理机制
mincheat
博客等级 码龄17年 46粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值