项目:我正在制作一个简单的项目,我希望能够制作一个运动体并将其从点x移动到y。似乎没有太多直接的“创造运动机构”。我一直在遵循一些关于实现运动物体的不同教程,因为我找不到指定如何正确执行运动物体的教程。libgdx - 实现移动的运动主体
问题:这似乎是一个简单的修复,但我只是无法弄清楚是什么问题,因为我不完全理解如何实现运动机构。我认为,问题就出在这个代码kinematicBody.setLinearVelocity(0.0f, 1.0f);
,因为我得到了"setLinearVelocity"
一个错误,说明“的方法setLinearVelocity(浮动,浮动)是未定义的类型BodyDef”我觉得我在这里做得不对
成果我想要:我希望能够创建一个从x点移动到y点的运动体。
这里是我的相关代码:
package com.mohamed.JungleFighter;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Game;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.physics.box2d.BodyDef;
import com.badlogic.gdx.physics.box2d.BodyDef.BodyType;
import com.badlogic.gdx.physics.box2d.Box2DDebugRenderer;
import com.badlogic.gdx.physics.box2d.CircleShape;
import com.badlogic.gdx.physics.box2d.FixtureDef;
import com.badlogic.gdx.physics.box2d.PolygonShape;
import com.badlogic.gdx.physics.box2d.World;
import com.sun.xml.internal.ws.wsdl.writer.document.soap.Body;
public class JungleFighter extends Game {
World world = new World(new Vector2(0, -100), true);
Box2DDebugRenderer debugRenderer;
OrthographicCamera camera;
static final float STEP=1/60f;
static final int VELOCITYITERATIONS=6;
static final int POSITIONITERATIONS=2;
static final float WORLD_TO_BOX=0.01f;
static final float BOX_WORLD_TO=100f;
@Override
public void create() {
camera = new OrthographicCamera();
camera.viewportHeight = 320;
camera.viewportWidth = 480;
camera.position.set(camera.viewportWidth * .5f, camera.viewportHeight * .5f, 0f);
camera.update();
//test platform 3
BodyDef kinematicBody =new BodyDef();
kinematicBody.type = BodyType.KinematicBody;
kinematicBody.position.set(100, 250);
PolygonShape shape = new PolygonShape();
shape.setAsBox(50f, 25f);
fixtureDef.shape = shape;
fixtureDef.density = 0;
fixtureDef.friction = 0;
fixtureDef.restitution = 0;
kinematicBody.setLinearVelocity(0.0f, 1.0f);
// Create our body in the world using our body definition
world.createBody(kinematicBody).createFixture(shape, 50.0f);
shape.dispose();
debugRenderer = new Box2DDebugRenderer();
}
@Override
public void dispose() {
}
@Override
public void render() {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
debugRenderer.render(world, camera.combined);
world.step(STEP, VELOCITYITERATIONS, POSITIONITERATIONS);
}
@Override
public void resize(int width, int height) {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
}
感谢@cavpollo,工作,我如何获得运动机构从点x移动到y? “kinematicBody.setLinearVelocity(-200.0f,200。0f);“仍然没有工作,我仍然得到错误说”方法setLinearVelocity(float,float)未定义类型BodyDef“ – RooneyMUFC
@RoneyNUFC,setLinearVelocity方法应该在Body上调用(它是testBody变量上面的例子),而不是BodyDef,这只是一个临时的便利类来描述身体属性。 –
@WillKru我试着做Body bodyBody = world.createBody(tempBodyDef); testBody.createFixture(tempFD);但那似乎不为我的程序工作,所以我修改它为world.createBody(testBody).createFixture(tempshape,50.0f);编译 – RooneyMUFC