box2d——1.tiles瓦片积木

【调试渲染】

  将TestCpp里Box2DTestBed的GLES-Render.h/cpp加入到项目中。声明绘制变量:GLESDebugDrawmDebugDraw。

【创建世界】  

	// 依据重力创建世界b2Vec2 gravity;gravity.Set(0.0f, -10.0f);mWorld = new b2World(gravity);// 设置调试渲染和碰撞侦听mWorld->SetDebugDraw(&mDebugDraw);mWorld->SetContactListener(this);// 创建地面身体b2BodyDef goundBodyDef;mGroundBody = mWorld->CreateBody(&goundBodyDef);// 设置物理更新函数schedule(schedule_selector(CTilesLayer::tick));
【创建物体】

	mFixtureCount = 0;b2Timer timer;// 创建静态的矩形(1个body多个shape、fixture){float32 a = 0.5f;b2BodyDef bd;bd.position.y = -a;b2Body* ground = mWorld->CreateBody(&bd);int32 N = 200;int32 M = 10;b2Vec2 position;position.y = 0.0f;for (int32 j = 0; j < M; ++j){position.x = -N * a;for (int32 i = 0; i < N; ++i){b2PolygonShape shape;shape.SetAsBox(a, a, position, 0.0f);ground->CreateFixture(&shape, 0.0f);++mFixtureCount;position.x += 2.0f * a;}position.y -= 2.0f * a;}}// 创建动态的矩形(一个shape多个body){float32 a = 0.5f;b2PolygonShape shape;shape.SetAsBox(a, a);b2Vec2 x(-7.0f, 0.75f);b2Vec2 y;b2Vec2 deltaX(0.5625f, 1.25f);b2Vec2 deltaY(1.125f, 0.0f);enum { e_count = 20 };for (int32 i = 0; i < e_count; ++i){y = x;for (int32 j = i; j < e_count; ++j){b2BodyDef bd;bd.type = b2_dynamicBody;bd.position = y;b2Body* body = mWorld->CreateBody(&bd);body->CreateFixture(&shape, 5.0f);++mFixtureCount;y += deltaY;}x += deltaX;}}
【设置物理显示】

	// 设置显示mTextLine = 30;setScale(15);setAnchorPoint( ccp(0,0) );CCSize screenSize = CCDirector::sharedDirector()->getWinSize();setPosition( ccp(screenSize.width/2, screenSize.height/3) );// 设置物理uint32 flags = 0;flags += b2Draw::e_shapeBit;flags += b2Draw::e_jointBit;mDebugDraw.SetFlags(flags);mWorld->SetWarmStarting(true);mWorld->SetContinuousPhysics(true);mWorld->SetSubStepping(false);

【绘制物理】

void CTilesLayer::draw()
{CCLayer::draw();ccGLEnableVertexAttribs( kCCVertexAttribFlag_Position );kmGLPushMatrix();// 绘制物理数据mWorld->DrawDebugData();kmGLPopMatrix();CHECK_GL_ERROR_DEBUG();
}
【更新物理】

void CTilesLayer::tick(float dt)
{// 显示const b2ContactManager& cm = mWorld->GetContactManager();int32 height = cm.m_broadPhase.GetTreeHeight();int32 leafCount = cm.m_broadPhase.GetProxyCount();int32 minimumNodeCount = 2 * leafCount - 1;float32 minimumHeight = ceilf(logf(float32(minimumNodeCount)) / logf(2.0f));mDebugDraw.DrawString(5, mTextLine, "dynamic tree height = %d, min = %d", height, int32(minimumHeight));mTextLine += 15;mWorld->Step(1/60.0f, 8, 3);mWorld->DrawDebugData();mDebugDraw.DrawString(5, mTextLine, "create time = %6.2f ms, fixture count = %d",mCreateTime, mFixtureCount);mTextLine += 15;}

【效果图和下载】


代码下载地址

转载于:https://www.cnblogs.com/ldxsuanfa/p/10886603.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/362682.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在JSF中实现自定义密码强度指示器

使用JavaScript验证密码强度是一项常见任务。 在本文中&#xff0c;我将展示如何向基于JSF的Web应用程序添加密码强度指示器。 的 PrimeFaces中的密码组件已经具有密码强度的反馈指示符&#xff0c;但是它有两个主要缺点&#xff1a; 反馈指示器没有响应&#xff08;固定宽度…

CSS 学习路线(二)选择器

选择器 规则结构: 分两个基本部分 选择器(selector)和声明块(declaration block) 组成 声明块:由一个或多个声明组成,每一个声明都是属性-值对 选择器分为:元素选择器,类选择器,后代选择器,通配选择器,ID选择器,属性选择器,伪类选择器.子元素选择器,相邻兄弟选择器. 元素选…

关于vue打包的问题

一、vue-cli2 二、vue-cli3 一、vue-cli2 错误提示&#xff1a; npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! hewelry1.0.0 build: node build/build.js npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the hewelry1.0.0 build script. npm ERR! This is prob…

关于==和equals的区别和联系,面试这么回答就可以

长篇大论的话&#xff0c;我这里就不多写了&#xff0c;相信大家入门java 的时候就知道个大概了&#xff0c;这里想表述的是&#xff0c;如果面试官问你《关于和equals的区别》&#xff0c;该怎么回答完美呢&#xff1f;可以这样说 总结的来说&#xff1a; 1&#xff09;对于&a…

如何使用新的Apache Http Client发出HEAD请求

如果您已更新Apache HTTP Client代码以使用最新的库&#xff08;在撰写本文时&#xff0c;它是4.2.x版本的httpclient 4.3.5版本和httpcore 4.3.2版本&#xff09;&#xff0c;您会注意到某些类&#xff08;例如org.apache.http.impl.client.DefaultHttpClient或org.apache.htt…

Delphi中禁止WebBrowser右键的方法

usesMSHtml;//在控件标签additional中找到TApplicationEvents控件&#xff0c;拖到窗体上&#xff0e;在TApplicationEvents的OnMessage事件中加入以下代码&#xff1a;//替换右键菜单procedureTForm1.ApplicationEvents1Message(varMsg: tagMSG; varHandled: Boolean);varmPoi…

【前端框架-Vue-基础】$attr及$listeners实现跨多级组件的通信

父子 A 组件与 B 组件之间的通信&#xff1a; &#xff08;父子组件&#xff09; 如上图所示&#xff0c;A、B、C三个组件依次嵌套&#xff0c;按照 Vue 的开发习惯&#xff0c;父子组件通信可以通过以下方式实现&#xff1a; A to B 通过props的方式向子组件传递&#xff0c…

html笔记(一)html4+css2.0、css基础和属性、盒模型

w3c 官网 这里是 html4 的内容 大标题小节一、关于HTML1. 基本语法2. HTML常用标签3. 相对路径和绝对路径二、css基础1. 表单元素2. 创建样式表3. css语法4. css选择器三、css的相关属性1. 列表 li 独有的属性list-style2. 边框属性border3. overflow4. 浮动 float 遇到的坑5.…

JUnit:使用Java 8和Lambda表达式测试异常

在JUnit中&#xff0c;有许多方法可以在测试代码中测试异常&#xff0c;包括try-catch idiom JUnit Rule和catch-exception库。 从Java 8开始&#xff0c;我们还有另一种处理异常的方法&#xff1a;使用lambda表达式。 在这篇简短的博客文章中&#xff0c;我将演示一个简单的示…

动态语言和静态语言的比较

一 、静态语言的优势到底在哪&#xff1f; 来自robbin 摘自 http://www.javaeye.com/article/33971?page7 引用是像Java或者C&#xff03;这样强类型的准静态语言在实现复杂的业务逻辑、开发大型商业系统、以及那些生命周期很长的应用中也有着非常强的优势这是一个存在于大家心…

sqlserver2012——使用子查询

1 select A.成绩&#xff0c;A.分数,B.姓名 FROM 成绩信息 A, 学生信息 BWHERE A.学生编号B.学号 AND A.课程编号‘2’ AND A.考试编号‘0801’ AND A.分数 <( SELECT AVG(分数) FROM 成绩信息 A&#xff0c;学生信息 B where A.学生编号B.学号 AND A.课程编号‘2’ and A.…

返回顶部小火箭

代码如下&#xff1a; <!DOCTYPE html> <html> <head lang"en"><meta charset"UTF-8"><title></title><style>body {width: 2000px;}.top{position: fixed;right:50px;bottom:100px;display: none;}</style&…

最佳5本Java性能调优书籍–精选,必读

为什么Java开发人员应该阅读有关性能调优的书&#xff1f; 当我很久以前第一次面对这个问题时&#xff0c;我以为以后会做&#xff0c;但是我很长一段时间都没有回过头来。 仅当我在用Java编写的任务关键型服务器端财务应用程序中遇到严重的性能和可伸缩性问题时&#xff0c;我…

html笔记(三)html5+css3(html5、css3、文字相关)

W3school在线教程 html5css3基本不兼容ie678。 大标题小节一、html51. html4 和 html5 的区别2. 标签语义化3. 智能表单的使用和规范二、css3选择器1. 属性选择器2. 结构性伪类选择器&#xff08;层级选择器/符&#xff09;3. UI状态性伪类选择器4. 相邻兄弟选择器5. 其他选择…

美登杯 E、小花梨的数组* 线段树

操作过程中标记传递 询问的时候再计算 #include<bits/stdc.h> using namespace std; //input by bxd #define rep(i,a,b) for(int i(a);i<(b);i) #define repp(i,a,b) for(int i(a);i>(b);--i) #define RI(n) scanf("%d",&(n)) #define RII(n,m) sc…

删除Windows Service

删除的办法有两个&#xff1a; 办法一&#xff1a; 用sc.exe这个Windows命令 开始——运行——cmd.exe&#xff0c;然后输入sc就可以看到了。使用办法很简单&#xff1a; sc delete "服务名" (如果服务名中间有空格&#xff0c;就需要前后加引号&am…

怎么得到scrollTop

我们学习一个事件 &#xff1a; 页面滚动效果 window.onscroll function() { 页面滚动语句 } 谷歌浏览器 和没有声明 DTD <DOCTYPE > &#xff1a; document.body.scrollTop; 火狐 和其他浏览器 document.documentElement.scrollTop; ie9 和 最新浏览器…

如何使用Spring和Velocity在Java中编写HTML电子邮件

在这篇文章中&#xff0c;我将介绍如何使用Spring和Velocity格式化和发送自动电子邮件。 Spring仅提供创建简单文本电子邮件的功能&#xff0c;这对于简单的情况很好&#xff0c;但是在典型的企业应用程序中&#xff0c;由于多种原因&#xff0c;您不希望这样做&#xff1a; 用…

console.log打印没有效果

今天用谷歌调试的时候&#xff0c;遇到了一个很奇怪的现象&#xff0c;console.log() 完全不出效果&#xff0c;把它放到script下的第一行也没有用。然后借鉴了几个博主的。 直接改 https://blog.csdn.net/wujy_rrycbar2016/article/details/78341973 打开控制台 -> 改为 D…

WINCE知识点滴

1.CE下同名设备不能大于10 CE5.0中已经没有这个问题了&#xff0c;以前的版本可以这样做&#xff1a;只给上层输出一个设备&#xff0c;然后用一个IOCTL去打开一个个的物理设备这样就可以做到不受任何限制了 2.MDD与PDD 一个驱动程序通常会被分成硬件相关&#xff08;PDD&#…