refactor(hero): 优化英雄缩放逻辑和位置配置

重构英雄缩放逻辑,使用统一的缩放计算方法替代硬编码值
调整英雄和怪物的初始位置坐标
在Hero和Monster类中添加size变量控制缩放
This commit is contained in:
2025-11-04 10:38:20 +08:00
parent ed1b4f46a4
commit 5c9f299fd7
6 changed files with 55 additions and 38 deletions

View File

@@ -41,7 +41,7 @@ export class Hero extends ecs.Entity {
// console.log("英雄加载:",uuid,pos,scale,info)
scale = 1
// 查找空闲英雄槽位
let size=1
var path = "game/heros/"+HeroInfo[uuid].path;
var prefab: Prefab = oops.res.get(path, Prefab)!;
var node = instantiate(prefab);
@@ -49,6 +49,7 @@ export class Hero extends ecs.Entity {
node.parent = scene.entityLayer!.node!
const collider = node.getComponent(BoxCollider2D);
if (collider) collider.enabled = false; // 先禁用
node.setScale(size*node.scale.x,size*node.scale.y);
node.setPosition(pos)
// 🔥 设置初始 SiblingIndex - 英雄基础层级 + 位置偏移

View File

@@ -144,12 +144,12 @@ export class HeroMoveSystem extends ecs.ComblockSystem implements ecs.ISystemUpd
// 只有当朝向真正改变时才更新
if (move.currentFacing !== newFacing) {
move.currentFacing = newFacing;
view.node.setScale(newFacing, 1, 1);
view.node.setScale(newFacing*view.node.scale.x, 1*view.node.scale.y);
// 安全获取top节点
const topNode = view.node.getChildByName("top");
if (topNode) {
topNode.setScale(newFacing, 1, 1);
topNode.setScale(newFacing*topNode.scale.x, 1*topNode.scale.y);
}
}
}

View File

@@ -81,8 +81,8 @@ export class HeroViewComp extends CCComp {
this.initUINodes();
/** 方向 */
this.node.setScale(this.scale,1);
this.top_node.setScale(this.scale,1);
this.node.setScale(this.scale*this.node.scale.x,1*this.node.scale.y);
this.top_node.setScale(this.scale*this.top_node.scale.x,1*this.top_node.scale.y);
// if(this.model && this.model.is_boss){
// this.top_node.position=v3(this.node.position.x,this.node.position.y+70,0)
// }

View File

@@ -37,6 +37,7 @@ export class Monster extends ecs.Entity {
/** 加载角色 */
load(pos: Vec3 = Vec3.ZERO,scale:number = 1,uuid:number=1001,lv:number=1,monType:MonType=MonType.NORMAL, buffs: BuffConf[] = [],is_call=false, lane: number = 0, spawnOrder: number = 0) {
scale=-1
let size=1
var scene = smc.map.MapView.scene;
var path = "game/heros/"+HeroInfo[uuid].path;
var prefab: Prefab = oops.res.get(path, Prefab)!;
@@ -45,6 +46,7 @@ export class Monster extends ecs.Entity {
node.parent = scene.entityLayer!.node!
const collider = node.getComponent(BoxCollider2D);
if (collider) collider.enabled = false; // 先禁用 // 延迟一帧启用碰撞体
node.setScale(size*node.scale.x,size*node.scale.y);
node.setPosition(pos)
// 🔥 设置初始 SiblingIndex - 防止溢出