gpt4 book ai didi

java - 弹丸速度 box2d

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

我想从屏幕右下角向屏幕左侧发射射弹。现在,我希望射弹根据屏幕尺寸以随机速度和角度飞行,就像那样。现在,我知道这非常简单,但由于某种原因我无法做到这一点。

这是我迄今为止尝试过的:

我的第一次尝试 - 启动功能

private void launchProjectile() {
projectiles.peek().getBody().applyForce(projectiles.peek().getBody().getWorldVector(new Vector2(MathUtils.random(-20,-1*SCALAR_HEIGHT),
MathUtils.random(2*SCALAR_HEIGHT,8*SCALAR_HEIGHT)).scl(MathUtils.random(3*SCALAR_HEIGHT,5*SCALAR_HEIGHT))),
projectiles.peek().getBody().getWorldCenter(), true);
Gdx.app.log("System", String.valueOf(SCALAR_HEIGHT));
}

这是我的第二次尝试 - 启动功能

private void launchProjectile() {
float xVelocity;
float yVelocity;
xVelocity = (float) MathUtils.random(0,0)*SCALAR_WIDTH/2;
yVelocity = (float) MathUtils.random(20,20)*SCALAR_HEIGHT;
velocityProjectile.set(xVelocity,yVelocity); // Sets the velocity vector to the above values
velocityProjectile.sub(projectiles.peek().getBody().getPosition());
velocityProjectile.nor(); // Normalize the vector - Now it's fine and ready!
// Sets the start velocity of the projectile Trajectory to the current velocity
projectiles.peek().getBody().setLinearVelocity(velocityProjectile.scl(18+SCALAR_HEIGHT));
}

在这两次尝试中,射弹的飞行速度都超出了我的需要,并且没有像应有的那样考虑屏幕尺寸。

你们能告诉我正确的方法是什么吗?

谢谢!!

最佳答案

从此页面开始:http://www.iforce2d.net/b2dtut/projected-trajectory

在“应该以多快的速度发射才能达到所需的高度?”部分,您可以看到使射弹到达屏幕顶部需要多少垂直速度。因此,您会选择一个小于该值的随机数,以确保它不会超出屏幕顶部。

接下来,在“它会走多高?”部分,您可以看到公式来找出射弹达到最大高度需要多少时间步长。然后需要相同的时间才能回到起始高度。例如,假设需要 60 个时间步才能达到最大高度。这意味着需要 120 个时间步才能再次落到与开始时相同的高度。然后您可以设置发射速度的水平部分,使其在 120 个时间步长内不能超出屏幕。

关于java - 弹丸速度 box2d,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26329559/

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