@@ -783,19 +783,24 @@ export class GameController extends Component {
|
||||
}
|
||||
|
||||
private async finalizeEntityPresentation(levelRoot: Node, config: LevelConfig): Promise<void> {
|
||||
await VisualAssets.refreshLevelEntityVisuals(levelRoot, config);
|
||||
// 先按各自 spawn 对齐格子,再绑乘:避免「先同格绑乘 → 再写回各自 spawn」把骑乘格拆散
|
||||
forEachLevelEntityNode(levelRoot, (node) => {
|
||||
const mov = node.getComponent(Movement);
|
||||
const spawn = mov?.getSpawnCell?.();
|
||||
if (spawn) mov.shareCommittedCell(spawn);
|
||||
});
|
||||
const player = findLevelChildByName(levelRoot, 'Player')?.getComponent(PlayerController);
|
||||
if (player) tryLinkPlayerVehicle(player);
|
||||
forEachLevelEntityNode(levelRoot, (ch) => {
|
||||
const vc = ch.getComponent(VehicleController);
|
||||
if (vc) tryLinkVehicleRider(vc);
|
||||
});
|
||||
await VisualAssets.refreshLevelEntityVisuals(levelRoot, config);
|
||||
forEachLevelEntityNode(levelRoot, (node) => {
|
||||
const mov = node.getComponent(Movement);
|
||||
const spawn = mov?.getSpawnCell?.();
|
||||
if (spawn) mov.shareCommittedCell(spawn);
|
||||
});
|
||||
sortIsoTiles(levelRoot);
|
||||
sortIsoTiles(levelRoot, true);
|
||||
// 延迟一帧再强制全量:等 LevelDisplay.scheduleOnce 对齐完砖,开局金币/遮挡一次算准
|
||||
this.scheduleOnce(() => {
|
||||
if (levelRoot?.isValid) sortIsoTiles(levelRoot, true);
|
||||
}, 0);
|
||||
}
|
||||
|
||||
async createNewLevel(levelID: number) {
|
||||
|
||||
Reference in New Issue
Block a user