有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Libgdx同步移动精灵

我有这样一类精灵,它会在整个波浪贴图中移动。我已经在ArrayList中存储了12个这样的精灵。我在想,我怎样才能让所有这些精灵一致行动,沿着同一条路走呢?这个雪碧是一个类似蜈蚣的部分,我想用它来制作蜈蚣。我知道这与从ArrayList的尾部更新段的位置有关。这是一个类,注意一个单元格是八个像素

public class CentipedeHead extends Sprite { enum State{ LEFT,RIGHT,DOWN } State currentState,previousState ; public static final float DOWN_MOVEMENT=7f; public float downMovCounter; public float speed; public float stateTime; TextureRegion image; Vector2 position,size; Animation<TextureRegion> animation; TextureRegion currentFrame; TextureRegion[]frames; public CentipedeHead(TextureRegion image, Vector2 position, Vector2 size) { super(new TextureRegion(image)); setPosition(position.x,position.y); setSize(size.x,size.y); currentState=State.LEFT; previousState=State.LEFT; speed=8f; } public void update(TiledMap map) { float delta=Gdx.graphics.getDeltaTime(); Gdx.app.log(" "+getX()+" "+getY()+" "+delta,"Data"); if(currentState ==State.LEFT){ setPosition(getX()-speed*delta,getY()); if(getX()<0) { previousState=currentState; currentState = State.DOWN; setFlip(true,false); } } if(currentState ==State.RIGHT){ setPosition(getX()+speed*delta,getY()); if(getX()> 19) { previousState=currentState; currentState = State.DOWN; setFlip(false,false); } } if(currentState ==State.DOWN){ setPosition(getX(),getY()-1); } TiledMapTileLayer cur = (TiledMapTileLayer) map.getLayers().get(2); TiledMapTileLayer.Cell cell = new TiledMapTileLayer.Cell(); if(cur.getCell(Math.round(getX()),Math.round(getY())).getTile().getProperties().containsKey("mushroom")) { if(getCurrentState()==State.LEFT) { setFlip(true,false); } else if(getCurrentState()==State.RIGHT) { setFlip(false,false); } previousState=currentState; currentState = State.DOWN; } }

共 (0) 个答案