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) 个答案