refactor(monster&hero): 重构三路分层逻辑与渲染排序

1. 移除飞行怪特殊判定,统一按Y轴高度处理三路渲染
2. 重命名飞行层相关变量为更准确的路次命名
3. 新增英雄自动分路均衡分配逻辑
4. 调整渲染排序规则,按Y轴高度决定上下层显示顺序
5. 修复怪物入场动画与刷怪分路逻辑
This commit is contained in:
panw
2026-05-12 16:32:25 +08:00
parent 86363f50b0
commit 20e9b1d484
5 changed files with 147 additions and 52 deletions

View File

@@ -123,7 +123,7 @@ export class Monster extends ecs.Entity {
* 2) 初始化表现、属性、技能与阵营
* 3) 播放下落入场并在落地后启用碰撞与移动
*/
load(pos: Vec3 = Vec3.ZERO,scale:number = 1,uuid:number=1001, is_boss:boolean=false, dropToY:number = pos.y,mon_lv:number=1, flyLaneIndex:number = 0) {
load(pos: Vec3 = Vec3.ZERO,scale:number = 1,uuid:number=1001, is_boss:boolean=false, dropToY:number = pos.y,mon_lv:number=1, laneIndex:number = 0) {
// 怪物默认朝左,表现缩放固定为负向
scale=-1
// 当前怪物尺寸固定,保留变量便于后续扩展
@@ -220,18 +220,7 @@ export class Monster extends ecs.Entity {
if (!node || !node.isValid) return;
// 落地后锁定最终位置,切换到落地完成状态
node.setPosition(pos.x, dropToY, 0);
// 如果是飞行怪,可以保持空中状态,这里依然调用 down
view.playEnd("down");
// 飞行怪加一个轻微的上下浮动动效
if (flyLaneIndex > 0) {
tween(node)
.by(1.5, { position: v3(0, 15, 0) }, { easing: "sineOut" })
.by(1.5, { position: v3(0, -15, 0) }, { easing: "sineIn" })
.union()
.repeatForever()
.start();
}
move.moving = true;
// 落地后启用怪物碰撞分组