0
我正在用libGDX開發一款遊戲。我有一個問題:如圖所示,知道初始座標和目標座標,如何實現子彈的拋物線效應?實現炮彈的操作。誰可以教我?或者告訴我一些教程。 TKS如何用libGDX實現以下效果?
圖片
我正在用libGDX開發一款遊戲。我有一個問題:如圖所示,知道初始座標和目標座標,如何實現子彈的拋物線效應?實現炮彈的操作。誰可以教我?或者告訴我一些教程。 TKS如何用libGDX實現以下效果?
圖片
你需要一些物理添加到您的應用程序(例如:Box2D的)。然後你用一些速度和某個方向/角度「扔」佳能球。 物理引擎爲你休息。 在這裏你有教程box2d:https://www.youtube.com/watch?v=vXovY2KTing
非常非常基本的例子拋出東西沒有box2d。對於你的例子,你需要爲目標位置計算正確的「權力」。
public class SampleApp extends ApplicationAdapter
{
Sprite sprite;
Vector2 velocity = new Vector2(0, 0);
Vector2 terminateVelocity = new Vector2(2000, 2000);
Vector2 friction = new Vector2(200, 300);
Vector2 position = new Vector2(0, 0);
Vector2 launchPower = new Vector2(0, 0);
boolean shotNow;
@Override
public void render()
{
update(Gdx.graphics.getDeltaTime());
// ...
// here render your stuff
}
public void shot(float power)
{
// Calculate x launch power
launchPower.x = ((power - sprite.getX() + sprite.getWidth()*0.5f)/2f) + velocity.x;
// We want to end our fly at ground
launchPower.y = ((0 - sprite.getY())/2f) + velocity.y;
// Setup start position
position.x = sprite.getX();
position.y = sprite.getY();
// Add some acc to velocity
velocity.add(launchPower);
shotNow = true;
}
public void update(float dt)
{
if (Gdx.input.justTouched()) {
shot(900);
}
// Very basic sprite movement.
// For best results you should implement more physics (acceleration etc.)
if (shotNow && position.y > 0) {
// Friction/gravity
velocity.x = MathUtils.clamp(velocity.x - friction.x * dt, -terminateVelocity.x, terminateVelocity.x);
velocity.y = MathUtils.clamp(velocity.y - friction.y * dt, -terminateVelocity.y, terminateVelocity.y);
position.add(velocity.x * dt, velocity.y * dt);
sprite.setPosition(position.x, position.y);
}
}
}
你需要Box2D來實現這些。 – Sparcsky
要確定達到某個目標的初始速度,我認爲你需要一些基本的大學新生水平微積分。 – Tenfour04
這與libgdx無關,這是基礎物理。 – Hllink