我正在尝试将播放器的生成点设置为特定的磁贴,但我不知道如何实现。以下是相关代码:
来自玩家类:
public Player(Level level, int x, int y, InputHandler input) {
super(level, "Player", x, y, 1);
this.input = input;
}
来自Game class:
public int spawnX = Level.getSpawnTileX();
public int spawnY = Level.getSpawnTileY(getY());
这是在我的init()中:
player = new Player(level, spawnX, spawnY, input);
这是我的Level课程:
public static int getSpawnTileX(int x){
for(int y = 0; y < height; y++){
for(int x1 = 0; x1 < width; x1++){
for(Tile t : Tile.tiles){
if(t.getLevelColor() == 0xff00ff00){
return x1;
}else{
return 0;
}
}
}
}
return x;
}
public static int getSpawnTileY(int y){
for(int x = 0; x < width; x++){
for(int y1 = 0; y1 < height; y1++){
for(Tile t : Tile.tiles){
if(t != null && t.getLevelColor() == 0xff00ff00){
return y1;
}else{
return 0;
}
}
}
}
return y;
}
这来自我的Tile课程:
public static final Tile SPAWN = new BasicTile(3, 3, 0, Colors.get(-1, 141, 131, -1), 0xffff0000);
public int getLevelColor(){
return levelColor;
}
瓷砖类:
public abstract class Tile {
public static final Tile[] tiles = new Tile[256];
public static final Tile VOID = new BasicSolidTile(0, 0, 0, Colors.get(000, -1, -1, -1), 0xff000000);
public static final Tile STONE = new BasicSolidTile(1, 1, 0, Colors.get(-1, 333, -1, -1), 0xff555555);
public static final Tile GRASS = new BasicTile(2, 2, 0, Colors.get(-1, 131, 141, -1), 0xff00ff00);
public static final Tile SPAWN = new BasicTile(3, 3, 0, Colors.get(-1, 141, 131, -1), 0xffff0000);
如果需要更多代码进行澄清,我很乐意尝试提供。对此有任何帮助非常感谢。
答案 0 :(得分:1)
您的问题在这里:
for(Tile t : Tile.tiles){
if(t.getLevelColor() == 0xff00ff00){
return x1;
}else{
return 0;
}
}
应该是这样的:
for(Tile t : Tile.tiles){
if(t.getLevelColor() == 0xff00ff00){
return x1;
}
}
问题是它只检查Tile.tiles
中的第一个值。如果它不是正确的值,它会立即返回0.我上面显示的更改使它实际上继续,并检查其余的图块。