cocos2dxlua面试题 lua中如何开启Box2D调试绘图

lua 中怎样才能使用box2d cocos2dx v2.2.5_百度知道
lua 中怎样才能使用box2d cocos2dx v2.2.5
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
huanglenzhi
来自知道合伙人认证行家
huanglenzhi
电脑类行家
采纳数:118321
获赞数:366693
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。
  cocos2d-x 的box2d没有导出lua的接口, 我建议你去看看quick-cocos2d-x 的物理引擎的使用, 它用的是chipmunk.这个目录下应该能帮到你quick-cocos2d-x-2.2.5\lib\cocos2d-x\external\chipmunk\cocos2dx_support
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。1、碰撞检测中的:
float force=impulse-&normalImpulses[0];的理解:
(1)原理透析:
两个物体产生碰撞的时候,除了检测是否碰撞了,很多时候我们需要知道碰撞强度有多大,比如愤怒的小鸟,要根据碰撞的强度决定是否消去障碍物。这一个教程解释如何获取碰撞强度。
碰撞的强度在物理上用冲量(Impluse)表示,在经典力学里,冲量等于物体动量的变化。
I = Ft (单位 N*s)
如果有恒力F,作用在质量为m、静止的物体上,经过时间t,会产生什么效果呢?由Ft=mat=mv看出,力与时间的乘积Ft越大,静止的物体获得的速度v就越大;Ft越小,物体的速度就越小。
冲量是矢量
冲量的方向由力的方向确定。如果在力的作用时间内,力的方向保持不变,则力的方向就是冲量的方向。
冲量与动量的关系
运动物体的质量和速度的乘积叫动量,p=mv,国际单位是千克米每秒。
在恒力F作用下,质量为m的物体在时间t内,速度由v变化到v′。根据牛顿第二定律,有F=ma式中F为物体所受外力的合力。等式两边同乘时间t,Ft=mat=mv′-mv,因此I=p′-p
总结说,质量一定的物体碰撞之后获取的速度可以用来衡量碰撞强度,其取决于碰撞力与时间的乘积,及冲量。因此box2D中,我们要判断碰撞强度,需要获取碰撞时的冲量,而box2D已经为你提供了方便的获取方式。具体获取方法如下:
获取碰撞冲量,这时需要覆盖另外一个方法PostSolve(contact:b2Contact, impulse:b2ContactImpulse),我们看到此方法有两个参数
(2)参数详解:
b2contact:碰撞对象,可以获取两个碰撞物体
impluse:碰撞冲量,及我们所需要的衡量碰撞强度的参数
impluse冲量是一个数组,具有两个元素,normalImpulses和tangentImpulses,都是矢量Vector类型
normalImpulses :碰撞普通合力产生的冲量
tangentImpulses :模拟切线方向摩擦力所产生的冲量(实际trace时总是0,可能是我的刚体原因)
//此方法由系统调用
void MyContactListener::PostSolve(b2Contact* contact, const b2ContactImpulse* impulse)
CCLog("PostSolve!");
float force=impulse-&normalImpulses[0];//表示冲量
if(force&2)
//得到物体A,B的数据
PhysicsSprite *spriteA=(PhysicsSprite *)contact-&GetFixtureA()-&GetBody()-&GetUserData();
PhysicsSprite *spriteB=(PhysicsSprite *)contact-&GetFixtureB()-&GetBody()-&GetUserData();
if(spriteA && spriteB)
spriteA-&hp--;
spriteB-&hp--;
随机梯度下降中,momentum的理解
Cocos2dx之Box2D详解 设置物体回复力
[图形学] 实时流体模拟中的数学方法
没有更多推荐了,>> cocos2dx box2d 投掷物体案例
cocos2dx box2d 投掷物体案例
所属分类:
下载地址:
box2d_throw.zip文件大小:61.51 MB
分享有礼! 》
请点击右侧的分享按钮,把本代码分享到各社交媒体。
通过您的分享链接访问Codeforge,每来2个新的IP,您将获得0.1 积分的奖励。
通过您的分享链接,每成功注册一个用户,该用户在Codeforge上所获得的每1个积分,您都将获得0.2 积分的分成奖励。
cocos2dx box2d学习最好案例,学习了box2d的附着,和发射,消除,有图片,在vs2010下调试成功
Sponsored links
源码文件列表
温馨提示: 点击源码文件名可预览文件内容哦 ^_^
(提交有效评论获得积分)
评论内容不能少于15个字,不要超出160个字。
SceneTow评论内容不能少于15个字,不要超出160个字
评价成功,多谢!
下载box2d_throw.zip
CodeForge积分(原CF币)全新升级,功能更强大,使用更便捷,不仅可以用来下载海量源代码马上还可兑换精美小礼品了
您的积分不足,优惠套餐快速获取 30 积分
10积分 / ¥100
30积分 / ¥200原价 ¥300 元
100积分 / ¥500原价 ¥1000 元
订单支付完成后,积分将自动加入到您的账号。以下是优惠期的人民币价格,优惠期过后将恢复美元价格。
支付宝支付宝付款
微信钱包微信付款
更多付款方式:、
您本次下载所消耗的积分将转交上传作者。
同一源码,30天内重复下载,只扣除一次积分。
鲁ICP备号-3 runtime:Elapsed:168.108ms - init:0.2;find:3.5;t:2.1;tags:13.6;related:31.2;comment:3.5; 27.69
登录 CodeForge
还没有CodeForge账号?
Switch to the English version?
^_^"呃 ...
Sorry!这位大神很神秘,未开通博客呢,请浏览一下其他的吧03:47:29 UTC
local winSize = cc.Director:getInstance():getWinSize()
local PTM_RATIO = 32.0
local gravity = b2Vec2(0.0, -10.0)
self._world = b2World:new_local(gravity)
**self._world:SetContactListener(nil)**
local groundBodyDef = b2BodyDef:new_local()
groundBodyDef.position = b2Vec2(0, 0)
local groundBody = self._world:CreateBody(groundBodyDef)
local groundEdge = b2EdgeShape:new_local()
local boxShapeDef = b2FixtureDef:new_local()
boxShapeDef.shape = groundEdge
groundEdge:Set(b2Vec2(0,0), b2Vec2(winSize.width/PTM_RATIO, 0))
groundBody:CreateFixture(boxShapeDef)
groundEdge:Set(b2Vec2(0,0), b2Vec2(0, winSize.height/PTM_RATIO))
groundBody:CreateFixture(boxShapeDef)
groundEdge:Set(b2Vec2(0, winSize.height/PTM_RATIO), b2Vec2(winSize.width/PTM_RATIO, winSize.height/PTM_RATIO))
groundBody:CreateFixture(boxShapeDef)
groundEdge:Set(b2Vec2(winSize.width/PTM_RATIO, winSize.height/PTM_RATIO), b2Vec2(winSize.width/PTM_RATIO, 0))
groundBody:CreateFixture(boxShapeDef)
local bodySprite = cc.Sprite:create("HelloWorld.png")
:addTo(self)
-- Create body and shape
local bodyDef = b2BodyDef:new_local()
bodyDef.type = b2_dynamicBody
bodyDef.position:Set(300 / PTM_RATIO, 500 / PTM_RATIO)
local _body = self._world:CreateBody(bodyDef)
local shape = b2PolygonShape:new_local()
shape:SetAsBox(195 / 2 / PTM_RATIO, 270 / 2 / PTM_RATIO);
local fixtureDef = b2FixtureDef:new_local()
fixtureDef.shape = shape
_body:CreateFixture(fixtureDef)
_body.userData = bodySprite
self.body_list = {}
table.insert(self.body_list, _body)
local function tick(dt)
self._world:Step(dt, 8, 3)
if self.body_list ~= nil then
for i, body in ipairs(self.body_list) do
local sprite = body.userData
sprite:setPosition(cc.p(body:GetPosition().x * PTM_RATIO, body:GetPosition().y * PTM_RATIO))
sprite:setRotation(-1 * 57.*(body:GetAngle()))
cc.Director:getInstance():getScheduler():scheduleScriptFunc(tick, 1 / 60, false)
01:21:50 UTC
有没有例子啊只有VIP会员才可以下载课程视频哦~
你可以添加极客老师QQ获取课程相关资料~
Cocos2d-x Box2D 距离、旋转和鼠标关节
视频太卡?试试切换线路
本课时主要讲解Box2D的距离关节,通过距离关来连接不同的物体实现常规关节的功能。
本课程主要讲解旋转关节,通过旋转关节来实现跷跷板和旋转风车的功能。
本课程主要讲解鼠标关节,讲解了鼠标关节与直接设置物体坐标的区别。
只有成为VIP会员才能提问&回复,快吧!如果你还没有账号你可以一个账号。
添加新技术问题
课程 [距离关节]
中已存在问题
添加新技术问题
问题描述越详细,被解答的速度越快
有新回答时请邮件提醒我
着急,拜托快点
不急,慢慢解决
关联课程 [距离关节]

我要回帖

更多关于 cocos2dx+lua 的文章

 

随机推荐