gpt4 book ai didi

java - 重力和错误的尺寸

转载 作者:太空宇宙 更新时间:2023-11-04 14:09:01 24 4
gpt4 key购买 nike

box2d 出现问题。我想添加到现有的游戏物理中,但遇到了问题。一、我用计算绘制的游戏世界

public Hero(float x, float y, int width, int height) {
this.width = width;
this.height = height;

position = new Vector2(x, y);
velocity = new Vector2(0, 0);
acceleration = new Vector2(0, -420);
}

public void update(float delta){
velocity.mulAdd(acceleration, delta);

if(velocity.y < -200){
velocity.y = -200;
}

position.mulAdd(velocity,delta);
}

public void onTap(){
velocity.y = 140;
}

英雄的 body 从标准设置中掉下来,但我添加到测试中的 body 框表现得很奇怪。

问题1.为什么box2d用这个设置比英雄框多了,但是当我除以二时,它变得和英雄的纹理大小相似?可能会链接这样的效果,以便 body 在各个方向上都是基于中心绘制的。 2.为什么重力-420的世界中的 body 以相同的速度连续下落,但没有我的英雄那么快。如何实现类似的效果呢?

    hero = new Hero(30, midPointY, 18, 21);
hero1 = new Box2Dhero(world, 90, midPointY, 18, 21);

它的 box2d 英雄构造函数

  public Box2Dhero(World world, float x, float y, int width, int height ) {

bodyDef = new BodyDef();
bodyDef.position.set(x,y);
bodyDef.type = BodyDef.BodyType.DynamicBody;
body = world.createBody(bodyDef);

box = new PolygonShape();
box.setAsBox(width,height);
fixtureDef = new FixtureDef();
fixtureDef.shape = box;
body.createFixture(fixtureDef);
}

我的游戏世界大小

 float screenWidth = Gdx.graphics.getWidth();
float screenHeight = Gdx.graphics.getHeight();
float gameHeight = 385;
float gameWidth = screenWidth / (screenHeight / gameHeight);

最佳答案

  1. 您对盒子基于各个方向单位长度的中心的观察是正确的。

    它应该会影响你的比较,因为 box2d 的盒子和你的盒子的起源不匹配。这个影响应该比较小。

    • 您将 y 方向的速度限制为 -200。做出这样的假设对于比较来说可能不是一个好主意。查找有关 box2d 功能的资源将是一个好主意(也许是来源)。
    • 大多数物理引擎执行统一的时间步长为 deterministic 。 Box2D 就是其中之一。您可以阅读有关统一时间步长的信息 here .

可能还有更多差异/优化,在我看来,查找源代码并进行比较将是最有效的解决方案。

祝你好运。

关于java - 重力和错误的尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28560555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com