<分区>
Java 中的代码(Android Studio)libgdx,...当您单击/触摸屏幕时如何计算圆形(如球)的射弹以及如何显示它? 就像打篮球....例如圆在 0,0(x,y) 中,角度为 50 度... 谢谢!!
<分区>
Java 中的代码(Android Studio)libgdx,...当您单击/触摸屏幕时如何计算圆形(如球)的射弹以及如何显示它? 就像打篮球....例如圆在 0,0(x,y) 中,角度为 50 度... 谢谢!!
最佳答案
如果您使用的是 box2d,则弹丸运动由您的 box2d 引擎处理。您只需要施加线速度。
float speed,angle;
Vector2 startingVelocity =new Vector2(speed,speed);
startingVelocity.rotate((float) angle - 45);
body.setLinearVelocity(startingVelocity);
速度和角度由您提供。
如果您不使用 box2d,那么您需要像这样处理球的位置和速度。
public class TestGame extends Game implements InputProcessor{
SpriteBatch spriteBatch;
Sprite ball;
Texture ballTex;
boolean isFired;
Vector2 gravity;
private float throwAngle=50;
private float deltaTime=2;
private Vector2 initialVelocity;
@Override
public void create() {
spriteBatch=new SpriteBatch();
ballTex=new Texture("image/ball.png");
ball=new Sprite(ballTex);
ball.setSize(50,50);
ball.setPosition(0,0);
Gdx.input.setInputProcessor(this);
gravity=new Vector2(0, -Gdx.graphics.getHeight()*.05f);
float throwVelocity=Gdx.graphics.getWidth()*.3f;
initialVelocity=new Vector2((float)(throwVelocity*Math.sin(throwAngle * Math.PI / 180)),(float)(throwVelocity*Math.cos(throwAngle * Math.PI / 180)));
}
@Override
public void render() {
super.render();
Gdx.gl.glClearColor(1,1,1,1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
updateBall();
spriteBatch.begin();
ball.draw(spriteBatch);
spriteBatch.end();
}
private void updateBall(){
if(isFired){
float delta=Gdx.graphics.getDeltaTime();
initialVelocity.x=initialVelocity.x+gravity.x*delta*deltaTime;
initialVelocity.y=initialVelocity.y+gravity.y*delta*deltaTime;
ball.setPosition(ball.getX()+initialVelocity.x * delta * deltaTime,ball.getY()+initialVelocity.y * delta * deltaTime);
}
}
@Override
public void resize(int width, int height) {
super.resize(width, height);
}
@Override
public void dispose() {
super.dispose();
ballTex.dispose();
spriteBatch.dispose();
}
@Override
public boolean keyDown(int keycode) {
return false;
}
@Override
public boolean keyUp(int keycode) {
return false;
}
@Override
public boolean keyTyped(char character) {
return false;
}
@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
isFired=true;
return false;
}
@Override
public boolean touchUp(int screenX, int screenY, int pointer, int button) {
return false;
}
@Override
public boolean touchDragged(int screenX, int screenY, int pointer) {
return false;
}
@Override
public boolean mouseMoved(int screenX, int screenY) {
return false;
}
@Override
public boolean scrolled(int amount) {
return false;
}
}
关于java - Java(Android Studio) libgdx 中的代码,如何计算射弹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42315977/
相关文章:
java - 如何使用 apache poi 更改 docx 的 style.xml 中的字体大小
java - 使用 ADB 截取屏幕截图并在 java 中检索它而无需写入文件
java - 指向应用程序内部 Activity 的 anchor 标记超链接
android - Xamarin Forms MasterDetail 页面导航导致 Android 崩溃 [致命信号 6 (SIGABRT),代码 -6],适用于 iOS 和 UWP
java - TextureRegions setRegion 方法 libgdx java