【发布时间】:2017-06-29 07:43:11
【问题描述】:
在我的自上而下的游戏中,我有一个敌人探测器来检测附近的敌人。我的问题是如何创建带有过渡的仪表条动画?我是这个框架的新手。感谢并提前
当玩家发现附近有敌人时,仪表条会像下面的图像屏幕截图一样动画
没有敌人
我的代码:
//detector
meter_bar = new Texture("meter_bar.png");
myTextureRegion = new TextureRegion(meter_bar);
myTexRegionDrawable = new TextureRegionDrawable(myTextureRegion);
actormeter_bar = new Image(myTexRegionDrawable);
actormeter_bar.setPosition(200,1005);
stage.addActor(actormeter_bar);
meter = new Texture("meter.png");
myTextureRegion = new TextureRegion(meter);
myTexRegionDrawable = new TextureRegionDrawable(myTextureRegion);
actormetter = new Image(myTexRegionDrawable);
actormetter.setPosition(190,990);
stage.addActor( actormetter);
球员移动(前锋):
//right_control
right_paw = new Texture(Gdx.files.internal("right_paw.png"));
myTextureRegion = new TextureRegion(right_paw);
myTexRegionDrawable = new TextureRegionDrawable(myTextureRegion);
moveForward = new ImageButton(myTexRegionDrawable); //Set the button up
moveForward.getStyle().imageUp = new TextureRegionDrawable(new TextureRegion(new Texture(Gdx.files.internal("right_paw.png"))));
//the hover
moveForward.getStyle().imageDown = new TextureRegionDrawable(new TextureRegion(new Texture(Gdx.files.internal("right_paw-hover.png"))));
moveForward.setPosition(520,110);
stage.addActor(moveForward); //Add the button to the stage to perform rendering and take input.
Gdx.input.setInputProcessor(stage);
moveForward.addListener(new InputListener(){
@Override
public void touchUp (InputEvent event, float x, float y, int pointer, int button) {
System.out.println("Right Button Pressed");
progressKnobX = progressKnobX + 4;
actorprogressknob.setX(progressKnobX); // x-position to move to
if(progressKnobX > 418 ) progressKnobX= 418 ;
music.play();
motionState=MotionState.NONE;
}
@Override
public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
motionState=MotionState.UP;
return true;
}
});
stage.addActor(moveForward);
EnemySprite 运动:
zombie = new Texture(Gdx.files.internal("enemy/ZombieSprite.png"));
zombiesprite = new Sprite(zombie);
zombieenemy = new Rectangle();
zombieenemy.setWidth(zombiesprite.getWidth());
zombieenemy = zombiesprite.getBoundingRectangle();
zombieenemy.x = zombieX;
zombieenemy.y = zombieY;
TextureRegion[][] zom = TextureRegion.split(zombie, zombie.getWidth() / Zombie_FRAME_COLS, zombie.getHeight() / Zombie_FRAME_ROWS);
TextureRegion[] zwalkFrames = new TextureRegion[Zombie_FRAME_COLS * Zombie_FRAME_ROWS];
index = 0;
for (int i = 0; i < Zombie_FRAME_ROWS; i++) {
for (int j = 0; j < Zombie_FRAME_COLS; j++) {
zwalkFrames[index++] = zom[i][j];
}
}
zombiewalkAnimation = new Animation<TextureRegion>(0.120f, zwalkFrames);
前进按钮功能:
//button functions
MotionState motionState=MotionState.NONE;
enum MotionState {
NONE {
@Override
public boolean update(Rectangle player) {
return true;
}
},
UP {
@Override
public boolean update(Rectangle player) {
player.y += 300 * Gdx.graphics.getDeltaTime();
return false;
}
},
DOWN{
@Override
public boolean update(Rectangle player) {
player.y -= 300 * Gdx.graphics.getDeltaTime();
return false;
}
},
LEFT{
@Override
public boolean update(Rectangle player) {
player.x -= 100 * Gdx.graphics.getDeltaTime();
return false;
}
},
RIGHT{
@Override
public boolean update(Rectangle player) {
player.x += 100 * Gdx.graphics.getDeltaTime();
return false;
}
};
public abstract boolean update(Rectangle player);
}
渲染
if(Gdx.input.isKeyPressed(Input.Keys.DOWN)) motionState = MotionState.DOWN;
if(Gdx.input.isKeyPressed(Input.Keys.UP)) motionState=MotionState.UP;
if(Gdx.input.isKeyPressed(Input.Keys.LEFT)) motionState=MotionState.LEFT;
if(Gdx.input.isKeyPressed(Input.Keys.RIGHT)) motionState=MotionState.RIGHT;
if(motionState.update(player)) motionState=MotionState.NONE;
if(player.y> 1910){
zombieenemy.y -= 60 * Gdx.graphics.getDeltaTime();
}
【问题讨论】:
标签: android libgdx transitions detect