gpt4 book ai didi

flutter - flutter 上的 Box2D 仿真非常缓慢

转载 作者:行者123 更新时间:2023-12-03 03:49:53 25 4
gpt4 key购买 nike

我正在重写一个使用 easlejs 和 Box2Dweb 制作的游戏,以使用 box2d 的 dart 端口 flutter 火焰引擎。我的问题是物体的移动速度真的很慢。重力设置似乎以线性方式进行。
我读过关于比例因子等的信息……只是不知道如何将它们全部联系起来。世界级没有那个,
有人可以向我展示如何将初始屏幕设置为 box2d 世界比例的示例吗?
我使用火焰调整大小覆盖获得 screenSize 我想用它来设置比例或任何有效的方法。
GitHub 中的示例似乎从未使用过它,甚至当我下载并运行它们时......再次痛苦地缓慢下落物体。
一个带有圆形或方形下降(正确)的简单屏幕将受到赞赏。
这是我实例化代码的方式。 (我需要对象为 80x80 像素)

class MyGame extends Game with TapDetector {
MyGame() : _world = Box2D.World.withGravity(Box2D.Vector2(0, 10)) {
_world.setAllowSleep(true);
spawnBlocks();
}

void createSquare(int index, double w, double h, double x, double y) {
int randomNumber = random.nextInt(letters.length);
var bodyDef = Box2D.BodyDef();
bodyDef.type = Box2D.BodyType.DYNAMIC;
bodyDef.position = Box2D.Vector2(x - 5, y);
bodyDef.angle = 0;
dynamicBody = _world.createBody(bodyDef);

dynamicBody.userData = letters[randomNumber];
var boxShape = Box2D.PolygonShape();
boxShape.setAsBox(w / 2, h / 2, Box2D.Vector2(w / 2, -h * 2), 0);

var boxFixtureDef = Box2D.FixtureDef();
boxFixtureDef.shape = boxShape;

boxFixtureDef.density = 0;
boxFixtureDef.restitution = 0;
boxFixtureDef.friction = 1;
dynamicBody.createFixtureFromFixtureDef(boxFixtureDef);

blocks.add(dynamicBody);
}

spawnBlocks() {
for (var i = 0; i < 8; i++) {
createSquare(
i, blockWidth, blockHeight, blockWidth * i + 18, -100 * i.toDouble());
}
}
}
无论我将重力设置多高, body 仍然以相同的速度下落。
即使当他们撞到地板时,他们的弹跳速度也很慢,我已经使用 body.setTransform 来增加 position.y 等,但它似乎只是通过静态物体(地板)移动。

最佳答案

由于您的正方形的密度为 0,因此不受重力影响,尝试将其设置为更高的值,看看对象是否受到更大的影响。
不要使用 body.setTransform如果你真的不需要,因为它会破坏世界上建立的物理。
你试过这个例子吗?
https://github.com/flame-engine/flame/tree/master/doc/examples/box2d/contact_callbacks
并且不要忘记添加 scale与你的世界争论,否则你会很快达到速度限制,因为你会被缩小。
我是 box2d forflame(现在是 Forge2D)的维护者,如果您有更多问题可以加入我们 discord 上的 box2d channel 。我会尽力帮助你。

关于flutter - flutter 上的 Box2D 仿真非常缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63893252/

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