我做了这个敌人的蜘蛛类,我可以用它来制造敌人的蜘蛛。这个类确实创造了蜘蛛,但是当我调用移动方法时它不会移动...任何想法?我从Map类调用move方法。身体和精灵被创建但是它再次由于某种原因不会移动。任何帮助都是适当的。
public SpiderEnemy(World world, float xposition, float yposition)
{
bdef=new BodyDef();
fdef=new FixtureDef();
shape=new PolygonShape();
xPosition=xposition;
yPosition=yposition;
texture=new Texture("spider.png");
textureRegion=new TextureRegion[1];
textureRegion[0]=new TextureRegion(texture,55,55,60,60);
HP=20;
HitDmg=10;
body=createBody(world);
}
public Body createBody(World world)
{
bdef.type=BodyDef.BodyType.KinematicBody;
bdef.position.set(xPosition+.5f,yPosition+.5f);
body=world.createBody(bdef);
shape.setAsBox(textureRegion[0].getRegionWidth()/Mango.PPM/10f,textureRegion[0].getRegionHeight()/Mango.PPM/10f);
fdef.shape=shape;
fdef.density=0;
body.createFixture(fdef);
fdef.filter.categoryBits=4;
circle=new CircleShape();
fdef.shape=circle;
circle.setRadius(0.5f);
fdef.isSensor=true;
body.createFixture(fdef).setUserData("SpiderSensor");
return body;
}
public void moveUp()
{
body.applyLinearImpulse(new Vector2(0,speed), body.getWorldCenter(), true);
}
public void moveDown()
{
System.out.println("MOVE");
body.applyLinearImpulse(new Vector2(0,-speed), body.getWorldCenter(), true);
}
public void moveForward()
{
body.applyLinearImpulse(new Vector2(speed,0), body.getWorldCenter(), true);
}
public void moveBack()
{
body.applyLinearImpulse(new Vector2(-speed,0), body.getWorldCenter(), true);
}
public void stopMoving()
{
body.setLinearVelocity(0, 0);
}
public float GetHitDmg()
{
return HitDmg;
}
public void calculateHealth(float Dmg)
{
HP=HP-Dmg;
}
public float getHP()
{
return HP;
}
public void killed()
{
for(int i=0;i<textureRegion.length;i++)
{
textureRegion[i]=null;
}
fdef.isSensor=false;
}
public void killSpider(World world)
{
world.destroyBody(body);
}
public void draw(SpriteBatch batch)
{
if(textureRegion[0]!=null)
{
batch.draw(textureRegion[0], xPosition, yPosition,texture.getWidth()/Mango.PPM/2,texture.getHeight()/Mango.PPM/2);
}
}
答案 0 :(得分:1)
不要使用body.applyLinearImpulse(new Vector2(-speed,0), body.getWorldCenter(), true);
使用body.setLinearVelocity(0, -speed);