簡體   English   中英

彈丸速度盒

[英]Projectile velocity box2d

我想從屏幕的右下角向屏幕的左側發射彈丸。 現在,我希望彈丸根據屏幕尺寸以隨機的速度和角度飛行,就像這樣。 現在,我知道這很簡單,但是由於某種原因,我無法設法完成這項工作。

到目前為止,這是我嘗試過的:

我的第一次嘗試-啟動功能

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個時間步內不會超出屏幕。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM