请考虑以下代码段:
class Level implements Screen{
Stage stage;
Group spaceInvaderGroup;
public Level(){
stage = new Stage(new FitViewport(120, 200));
spaceInvaderGroup = new Group();
spaceInvaderGroup.addActor(new SpaceInvader);
spaceInvaderGroup.addActor(new SpaceInvader);
spaceInvaderGroup.addActor(new SpaceInvader);
spaceInvaderGroup.addActor(new SpaceInvader);
}
public void render(){
spaceInvaderGroup.moveBy(0.1F,0);
stage.act();
stage.draw();
}
}
class SpaceInvader extends Actor{
private Sprite sprite;
private Vector2 stageCoords;
SpaceInvader(){
sprite = new Sprite;
//set Textures of sprite here
//bounds are set here using SI units
}
@override
public void draw(Spritebatch batch, float parentAlpha){
batch.draw(sprite);
super.draw();
}
@override
public void act(){
setGlobalPosition();
sprite.setPosition(stageCoords.x, stageCoords.y);
super.act();
}
private void setGlobalPosition() {
stageCoords = localToStageCoordinates(new Vector2(0, 0));
}
}
我想在libgdx中制作一个SpaceInvaders游戏。由于太空入侵者以协调的方式移动,我决定将它们放在group
中并使用moveBy
方法移动该组。要绘制spaceInvaders,我得到他们的stage coordinates
并使用舞台坐标绘制Sprite。问题是,舞台坐标不正确。我的问题是,同时从不同群体中吸引演员的正确方法是什么?我的方法是否正确,首先将所有局部corrdinates转换为舞台坐标,如果是,为什么我的结果错了?