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 {
|
||||
final tileset = await IsometricTileset.load('tiles.png', 32);
|
||||
final matrix = [
|
||||
final layer0 = [
|
||||
[-1, 1, 1, 1, 0, 0],
|
||||
[-1, 1, 2, 1, 0, 0],
|
||||
[-1, 0, 1, 1, 0, 0],
|
||||
@ -24,10 +24,26 @@ class MyGame extends BaseGame {
|
||||
[1, 1, 1, 1, 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(
|
||||
IsometricTileMapComponent(tileset, matrix)
|
||||
..x = 100
|
||||
..y = 100,
|
||||
IsometricTileMapComponent(tileset, layer0, destTileSize: s)
|
||||
..x = x
|
||||
..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 'package:flame/components/component.dart';
|
||||
@ -47,6 +48,7 @@ class IsometricTileMapComponent extends PositionComponent {
|
||||
prepareCanvas(c);
|
||||
|
||||
final s = effectiveTileSize.toDouble() / 2;
|
||||
final size = Position.fromInts(effectiveTileSize, effectiveTileSize);
|
||||
matrix.asMap().forEach((i, line) {
|
||||
line.asMap().forEach((j, element) {
|
||||
if (element == -1) {
|
||||
@ -54,7 +56,8 @@ class IsometricTileMapComponent extends PositionComponent {
|
||||
}
|
||||
|
||||
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