2016-12-17 9 views
0

私はこの敵のクモのクラスを作って敵のクモを作ることができます。クラスはスパイダーを作成しますが、私は移動メソッド...任意のアイデアを呼び出すときに動くことはありませんか?私はMapクラスからmoveメソッドを呼び出します。ボディとスプライトが作成されますが、何らかの理由で再び動きません。どんな援助もappretaitedされるでしょう。Box2dのボディは移動しません

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); 
    } 
} 

答えて

1

いけ使用body.applyLinearImpulse(new Vector2(-speed,0), body.getWorldCenter(), true);

使用body.setLinearVelocity(0, -speed);

関連する問題