feat(skill): add force spawn position setting for skills

add forceStartX and forceStartY properties to control skill spawn position
directly use world coordinates when the values are >=0, otherwise use original offset logic
This commit is contained in:
panFD
2026-08-16 16:49:12 +08:00
parent 4fc9acad7c
commit 6f988dabed
2 changed files with 19 additions and 2 deletions

View File

@@ -159,8 +159,17 @@ export class Skill extends ecs.Entity {
SView.group = caster.box_group SView.group = caster.box_group
this.add(SView); this.add(SView);
startPos.x = startPos.x + SView.atk_x * face // 强制出生点:-1=不强制使用 atk_x/atk_y 偏移,>=0=强制世界坐标
startPos.y = startPos.y + SView.atk_y if (SView.forceStartX >= 0) {
startPos.x = SView.forceStartX;
} else {
startPos.x = startPos.x + SView.atk_x * face;
}
if (SView.forceStartY >= 0) {
startPos.y = SView.forceStartY;
} else {
startPos.y = startPos.y + SView.atk_y;
}
node.setPosition(startPos); node.setPosition(startPos);

View File

@@ -42,6 +42,14 @@ export class SkillView extends CCComp {
@property({ type: CCFloat, slide: true, range: [0, 2000, 10], tooltip: "直线飞行距离(仅 linear 生效)" }) @property({ type: CCFloat, slide: true, range: [0, 2000, 10], tooltip: "直线飞行距离(仅 linear 生效)" })
distance: number = 0; distance: number = 0;
/** 强制出生点世界坐标X-1=不强制,使用 atk_x 偏移;>=0 时强制使用该值,如 0=屏幕中心) */
@property({ type: CCFloat, tooltip: "强制出生点X-1=不强制,>=0=强制世界坐标X" })
forceStartX: number = -1;
/** 强制出生点世界坐标Y-1=不强制,使用 atk_y 偏移;>=0 时强制使用该值) */
@property({ type: CCFloat, tooltip: "强制出生点Y-1=不强制,>=0=强制世界坐标Y" })
forceStartY: number = -1;
private debugMode: boolean = false; private debugMode: boolean = false;
anim: Animation = null; anim: Animation = null;