首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Box2d body setLinearImpulse()函数稳定性

Box2d body setLinearImpulse()函数稳定性
EN

Stack Overflow用户
提问于 2013-12-09 09:34:29
回答 2查看 151关注 0票数 0

我正在为Android开发一个由Andengine开发的游戏。游戏:有一个身体(比如说小盒子)。我想:玩家和它相撞,玩家会跳下去。它是跳跃,但不是跳到相同的高度(在我的代码100 is )在每次碰撞!我的密码在这里:

代码语言:javascript
代码运行次数:0
运行
复制
if (footFake.collidesWith(this))
{  

     player.getBody().applyLinearImpulse(new Vector2(0, 100/PhysicsConstants.PIXEL_TO_METER_RATIO_DEFAULT), player.getBody().getWorldCenter());

}

盒子的身体特征是:

代码语言:javascript
代码运行次数:0
运行
复制
final FixtureDef fixtureDef = PhysicsFactory.createFixtureDef(0, 0, 0);
this.body = PhysicsFactory.createBoxBody(this.mPhysicsWorld, this, BodyType.StaticBody, fixtureDef);
this.body.setUserData("jumpBox");
this.mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(this, this.body, true, true)); 

玩家:

代码语言:javascript
代码运行次数:0
运行
复制
final FixtureDef fixtureDef = PhysicsFactory.createFixtureDef(0, 0, 0.1f);
this.body = PhysicsFactory.createBoxBody(this.mPhysicsWorld, this, BodyType.DynamicBody, fixtureDef);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-09 11:04:55

施加冲量并不一定会给出相同的高度跳跃,因为身体的现有速度可能是不同的。您可以使用SetLinearVelocity设置身体的垂直速度,以确保每次启动速度都是恒定的。

当然,就像Singhak所说的,你也应该确保在身体上没有其他的影响(比如碰撞),它会破坏你想要的速度。

票数 0
EN

Stack Overflow用户

发布于 2013-12-09 10:03:57

而不是施加冲动,你可以逐步改变身体,直到你想要的高度。

在你的例子中,身体不是以同样的高度跳跃,因为当物体碰撞时,许多力都施加在它身上。力的一些时间值是相同的,而有些时间是不同的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20467340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档