mirror of
https://github.com/flame-engine/flame.git
synced 2025-11-01 19:12:31 +08:00
layers
This commit is contained in:
@ -16,7 +16,7 @@ class MyGame extends BaseGame {
|
|||||||
}
|
}
|
||||||
void init() async {
|
void init() async {
|
||||||
final tileset = await IsometricTileset.load('tiles.png', 32);
|
final tileset = await IsometricTileset.load('tiles.png', 32);
|
||||||
final matrix = [
|
final layer0 = [
|
||||||
[-1, 1, 1, 1, 0, 0],
|
[-1, 1, 1, 1, 0, 0],
|
||||||
[-1, 1, 2, 1, 0, 0],
|
[-1, 1, 2, 1, 0, 0],
|
||||||
[-1, 0, 1, 1, 0, 0],
|
[-1, 0, 1, 1, 0, 0],
|
||||||
@ -24,10 +24,26 @@ class MyGame extends BaseGame {
|
|||||||
[1, 1, 1, 1, 0, 2],
|
[1, 1, 1, 1, 0, 2],
|
||||||
[1, 3, 3, 3, 0, 2],
|
[1, 3, 3, 3, 0, 2],
|
||||||
];
|
];
|
||||||
|
final layer1 = [
|
||||||
|
[-1, 0, 0, 1, -1, -1],
|
||||||
|
[-1, 0, -1, 1, -1, -1],
|
||||||
|
[-1, -1, 0, 1, -1, -1],
|
||||||
|
[-1, 0, 0, 1, -1, -1],
|
||||||
|
[0, 0, 0, 1, -1, -1],
|
||||||
|
[0, -1, -1, -1, -1, -1],
|
||||||
|
];
|
||||||
|
const x = 500.0;
|
||||||
|
const y = 500.0;
|
||||||
|
const s = 64;
|
||||||
add(
|
add(
|
||||||
IsometricTileMapComponent(tileset, matrix)
|
IsometricTileMapComponent(tileset, layer0, destTileSize: s)
|
||||||
..x = 100
|
..x = x
|
||||||
..y = 100,
|
..y = y,
|
||||||
|
);
|
||||||
|
add(
|
||||||
|
IsometricTileMapComponent(tileset, layer1, destTileSize: s)
|
||||||
|
..x = x
|
||||||
|
..y = y - s / 2,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
import 'dart:convert';
|
||||||
import 'dart:ui';
|
import 'dart:ui';
|
||||||
|
|
||||||
import 'package:flame/components/component.dart';
|
import 'package:flame/components/component.dart';
|
||||||
@ -47,6 +48,7 @@ class IsometricTileMapComponent extends PositionComponent {
|
|||||||
prepareCanvas(c);
|
prepareCanvas(c);
|
||||||
|
|
||||||
final s = effectiveTileSize.toDouble() / 2;
|
final s = effectiveTileSize.toDouble() / 2;
|
||||||
|
final size = Position.fromInts(effectiveTileSize, effectiveTileSize);
|
||||||
matrix.asMap().forEach((i, line) {
|
matrix.asMap().forEach((i, line) {
|
||||||
line.asMap().forEach((j, element) {
|
line.asMap().forEach((j, element) {
|
||||||
if (element == -1) {
|
if (element == -1) {
|
||||||
@ -54,7 +56,8 @@ class IsometricTileMapComponent extends PositionComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final sprite = tileset.getTile(element);
|
final sprite = tileset.getTile(element);
|
||||||
sprite.renderPosition(c, cartToIso(Position(j * s, i * s)));
|
final p = cartToIso(Position(j * s, i * s));
|
||||||
|
sprite.renderRect(c, Position.rectFrom(p, size));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user