0
すでにテクスチャ領域の描画が完了していますが、テクスチャ領域を反転しようとしているときに機能していないため、複数のフレームを描画しようとしても機能しません。私は、getフレームメソッド内体の速度をチェックしてみましたが、私はこのコードを使用する場合、それは私に0を与える:Libgdxテクスチャ領域が反転していません
Gdx.app.log(String.valueOf(b2body.getLinearVelocity().x),"hi");
は誰も私を助けることができます。これはコードです:TextureRegion.flip()
を使用して
public class Collector extends Sprite {
public enum State{STANDING,RUNNING,DEAD};
public State currentState;
public State previousState;
public World world;
public Body b2body;
private TextureRegion collectorStand;
private Animation collectorRun;
private float stateTimer;
private boolean runningRight;
public Collector(World world,PlayScreen screen)
{
super(screen.getAtlas().findRegion("myboy1"));
this.world=world;
currentState=State.STANDING;
previousState=State.STANDING;
stateTimer=0;
runningRight=true;
Array<TextureRegion> frames=new Array<TextureRegion>();
for(int i=0;i<3;i++)
frames.add(new TextureRegion(getTexture(),i*90,122,90,300));
//frames.add(new TextureRegion(getTexture(),90,122,110,300));
//frames.add(new TextureRegion(getTexture(),200,122,110,300));
collectorRun=new Animation(0.1f,frames);
frames.clear();
collectorStand=new TextureRegion(getTexture(), 0, 122, 89, 300);
//collectorStand=new TextureRegion(getTexture(),90,122,110,300);
//collectorStand=new TextureRegion(getTexture(),200,122,110,300);
defineCollector();
setBounds(0,0,50/Fruits.PPM,100/Fruits.PPM);//here we can change the size of our Animation
setRegion(collectorStand);
}
public TextureRegion myregion(float dt)
{
TextureRegion region;
region=collectorStand;
Gdx.app.log(String.valueOf(b2body.getLinearVelocity().x),"hi");
if(b2body.getLinearVelocity().x<0)
{
region.flip(true,false);
}
return region;
}
public void update(float dt)
{
setPosition(b2body.getPosition().x - getWidth()/2, b2body.getPosition().y - getHeight()/2.8f);
//setRegion(myregion(dt));
setRegion(getFrame(dt));
}
public TextureRegion getFrame(float dt)// return the appropriate frames for the sprite to be drawn
{
currentState=getState();
TextureRegion region;
switch (currentState)
{
case RUNNING:
region=collectorRun.getKeyFrame(stateTimer,true);
break;
case STANDING:
default:
region=collectorStand;
break;
}
Gdx.app.log(String.valueOf(b2body.getLinearVelocity().x),"hi");
if((b2body.getLinearVelocity().x<0 || !runningRight)&& !region.isFlipX())
{
region.flip(true,false);
runningRight=false;
}
else if((b2body.getLinearVelocity().x>0 || runningRight)&& region.isFlipX())
{
region.flip(true,false);
runningRight=true;
}
stateTimer=currentState==previousState?stateTimer+dt:0;
previousState=currentState;
return region;
}
public State getState()
{
if(b2body.getLinearVelocity().x!=0)
return State.RUNNING;
else
return State.STANDING;
}
public void defineCollector()
{
BodyDef bdef=new BodyDef();
bdef.position.set(72/Fruits.PPM,32/Fruits.PPM);
bdef.type=BodyDef.BodyType.DynamicBody;
b2body=world.createBody(bdef);
FixtureDef fdef=new FixtureDef();
//PolygonShape shape=new PolygonShape();
CircleShape shape=new CircleShape();
shape.setRadius(20/Fruits.PPM);
fdef.shape=shape;
b2body.createFixture(fdef);
}
}
あなたは一度だけそれを反転されていますか?テクスチャ領域は、その領域を使用しているすべてのオブジェクトから失われるテクスチャ上の領域です。 – Madmenyo