- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写一个 LibGDX 游戏。
目前我正在尝试添加一个从屏幕顶部落到底部然后重新出现在屏幕上并再次落下的图像,我还需要找到一种可以检测与玩家碰撞的方法(我将接下来必须学习如何正确添加播放器)。
问题是我在这部分 Libgdx 方面没有任何经验,我还是个新手。
这是我目前尝试过的,
Image image;
public Beam(Image image) {
this.image = image;
image.setPosition(LevelSmash.HEIGHT, LevelSmash.WIDTH);
}
public void update(){
image.setY(image.getY() - 1);
}
public void draw(SpriteBatch sb){
sb.begin();
//Draw image?
sb.end();
}
我已经知道它很糟糕,我不知道该使用哪些 LibGDX 类,我想知道它是 Body 还是什么?
编辑
更新代码
public class Beam extends Sprite{
Image image;
Body body;
public Beam(World world) {
BodyDef bodyDef = new BodyDef();
bodyDef.type = BodyDef.BodyType.DynamicBody;
bodyDef.position.set(100, 300);
body = world.createBody(bodyDef);
CircleShape circle = new CircleShape();
circle.setRadius(20f);
FixtureDef fixtureDef = new FixtureDef();
fixtureDef.shape = circle;
fixtureDef.density = 0.5f;
fixtureDef.friction = 0.4f;
fixtureDef.restitution = 0.6f;
Fixture fixture = body.createFixture(fixtureDef);
circle.dispose();
body.setUserData(this);
setRegion(new Texture("beam.png"));
}
public void update(float dt){
}
public Body getBody(){
return body;
}}
最佳答案
我认为你现在应该远离 box2d。将它用于这个项目似乎有些矫枉过正。
这是一个如何解决它的例子:
光束类:
public class Beam{
private Rectangle bound;
private TextureRegion texture;
private float weight = 10; //or gravity or however you want to think about it
public Beam(float x, float y, float width, float height){
texture = new Texture(Gdx.files.internal("beam.png"));
bound = new Rectangle(x,y,width,height);
}
public void update(float delta){
bound.y -= weight*delta;
}
public Rectangle getBound(){
return bound;
}
public Texture getTexture(){
return texture;
}
}
只需更改 bound.y 即可使光束到达屏幕顶部
beam.getBound().y = newValue;
您可以对对象本身或游戏中任何有意义的地方执行此操作。
然后当你添加一个玩家时,你也给那个对象一个绑定(bind),你可以与以下对象进行简单的碰撞:
if( player.getBound().overlaps(beam.getBound())){
//collision
}
边界是来自 libgdx 的矩形对象。它包含 x 和 y 坐标以及宽度和高度。使用矩形使移动对象和碰撞检测变得非常简单。
编辑:
从 render() 绘制纹理:
public void render(float delta){
...
beam.update(delta);
spriteBatch.begin();
spriteBatch.draw(beam.getTexture(), beam.getBound().x, beam.getBound().y);
spriteBatch.end();
}
或者让光束自己绘制:
public void render(float delta){
...
beam.update(delta);
spriteBatch.begin();
beam.draw(spritebatch);
spriteBatch.end();
}
在光束类中:
public void draw(SpriteBatch spriteBatch){
spriteBatch.draw(texture, bound.x, bound.y);
}
关于java - LibGdx 坠落物体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40988751/
我正在Windows 8上构建一个相当简单的Meteor项目,尽管重新安装了meteor,并手动重新设置了库,但应用程序运行了很短一段时间后,meteor就会崩溃并且不会重新启动。 Meteor 也无
我正在尝试使用 React.js 在 Meteor 中做一个简单的 hello world。当我尝试运行应用程序时,它因“ReferenceError:文档未定义”而崩溃。这个错误对我来说没有意义,文
这是我的 Player 类(我想在空格键上跳转的对象),我只是不知道从哪里开始,是否有任何我可以在互联网上阅读的相关资源大部头书?任何帮助都很棒,谢谢。 package com.zetcode; im
我是一名优秀的程序员,十分优秀!