怪物 改为3条直线 进入, 攻击动画 直线的已改, 抛物线和群攻的 也需要修改

This commit is contained in:
2025-07-17 09:53:19 +08:00
parent 8aa4edabd4
commit 5a9da59acc
13 changed files with 62 additions and 37 deletions

View File

@@ -103,6 +103,7 @@ export const VmInfo = {
exp:0,
next_exp:100,
cd:3,
skill_cd_buff:0,//技能cd修正
damage:0,
ap:0,
equip_ap:0,

View File

@@ -53,9 +53,9 @@ export const HQuality = {
ORANGE:5,
}
export const MonSet = {
0:{pos:v3(340,0,0)},
1:{pos:v3(360,0,0)},
2:{pos:v3(380,0,0)},
0:{pos:v3(370,0,0)},
1:{pos:v3(370,+80,0)},
2:{pos:v3(370,-80,0)},
3:{pos:v3(400,0,0)},
4:{pos:v3(420,0,0)},
5:{pos:v3(440,0,0)},

View File

@@ -126,6 +126,7 @@ export class BuffComp extends Component {
info.dod=this.HeroView.dod+buff.DODGE
info.def=this.HeroView.def+buff.DEF
info.wind=buff.WFUNY
info.skill_cd_buff=buff.SKILL_CD
}
}

View File

@@ -159,7 +159,7 @@ export class SkillConComp extends CCComp {
this.HeroView.node.position.y + BoxSet.ATK_Y, 0),
this.node.parent,
config.uuid,
new Vec3(target.x, target.y, 0),
new Vec3(target.x, target.y+BoxSet.ATK_Y, 0),
this.HeroView,
0,
dmg
@@ -196,7 +196,8 @@ export class SkillConComp extends CCComp {
let keyPos = this.HeroView.fac==FacSet.HERO ?
Math.min(...entities.map(e => e.get(HeroViewComp).node.position.x)) :
Math.max(...entities.map(e => e.get(HeroViewComp).node.position.x));
return keyPos
let keyEntity = entities.find(e => e.get(HeroViewComp).node.position.x === keyPos);
return keyEntity.get(HeroViewComp).node.position;
}
/** 筛选最前排单位 */
private filterFrontRow(): Vec3{
@@ -211,7 +212,7 @@ export class SkillConComp extends CCComp {
return v3(-400,0)
}
}
pos=v3(this.get_front(entities),0)
pos=v3(this.get_front(entities))
return pos
}
private selectTeamFront(){

View File

@@ -79,7 +79,8 @@ export class EquipSkillComp extends CCComp {
update(dt: number): void {
if(!smc.mission.play||smc.mission.pause) return
if(this.skill1.uuid!=0){
let cd=this.skill1.cd
let cd_bar=this.boxs.getChildByName("skill1").getChildByName("icon").getChildByName("cd")
let cd=this.skill1.cd*(100-smc.vmdata.hero.skill_cd_buff)/100
if(this.skill1.cd_time < cd){
this.skill1.cd_time+=dt
}else{
@@ -87,10 +88,11 @@ export class EquipSkillComp extends CCComp {
this.do_skill1()
}
}
this.boxs.getChildByName("skill1").getChildByName("icon").getChildByName("cd").getComponent(ProgressBar).progress=(1-this.skill1.cd_time/cd)
cd_bar.getComponent(ProgressBar).progress=(1-this.skill1.cd_time/cd)
}
if(this.skill2.uuid!=0){
let cd=this.skill2.cd
let cd_bar=this.boxs.getChildByName("skill2").getChildByName("icon").getChildByName("cd")
let cd=this.skill2.cd*(100-smc.vmdata.hero.skill_cd_buff)/100
if(this.skill2.cd_time < cd){
this.skill2.cd_time+=dt
}else{
@@ -98,10 +100,11 @@ export class EquipSkillComp extends CCComp {
this.do_skill2()
}
}
this.boxs.getChildByName("skill2").getChildByName("icon").getChildByName("cd").getComponent(ProgressBar).progress=(1-this.skill2.cd_time/cd)
cd_bar.getComponent(ProgressBar).progress=(1-this.skill2.cd_time/cd)
}
if(this.skill3.uuid!=0){
let cd=this.skill3.cd
let cd_bar=this.boxs.getChildByName("skill3").getChildByName("icon").getChildByName("cd")
let cd=this.skill3.cd*(100-smc.vmdata.hero.skill_cd_buff)/100
if(this.skill3.cd_time < cd){
this.skill3.cd_time+=dt
}else{
@@ -109,7 +112,7 @@ export class EquipSkillComp extends CCComp {
// this.do_skill3()
}
}
this.boxs.getChildByName("skill3").getChildByName("icon").getChildByName("cd").getComponent(ProgressBar).progress=(1-this.skill3.cd_time/cd)
cd_bar.getComponent(ProgressBar).progress=(1-this.skill3.cd_time/cd)
}
}
do_skill1(){

View File

@@ -29,7 +29,7 @@ export class MissionMonCompComp extends CCComp {
buffData?: any[] // 使用BuffAttr格式的buff数据
}> = [];
private isSpawning: boolean = false;// 是否正在生成怪物
private spawnInterval: number = 0.5; // 每个怪物生成间隔时间
private spawnInterval: number = 1; // 每个怪物生成间隔时间
private spawnTimer: number = 0; // 生成计时器
private is_fight:boolean = false;
@@ -78,7 +78,6 @@ export class MissionMonCompComp extends CCComp {
const rogueWaveConfig = getRogueWaveConfig(currentWave);
console.log(`[MissionMonComp]:肉鸽模式第${currentWave}波配置:`, rogueWaveConfig.description);
this.generateRogueMonstersFromConfig(rogueWaveConfig);
}
@@ -106,9 +105,10 @@ export class MissionMonCompComp extends CCComp {
// 为每个怪物组生成指定数量的怪物
for (let i = 0; i < count; i++) {
// 随机选择位置 (0-9)
let x=i%3 //0 1 2
this.addToSpawnQueueWithAffixes(
uuid,
i,
x,
isBoss || false,
monsterLevel,
affixes,
@@ -189,9 +189,10 @@ export class MissionMonCompComp extends CCComp {
lv: number = 1,
buffData?: any[]
) {
let x=RandomManager.instance.getRandomInt(0,2)
let mon = ecs.getEntity<Monster>(Monster);
let scale = -1;
let pos: Vec3 = v3(MonSet[i].pos);
let pos: Vec3 = v3(MonSet[x].pos);
// 生成怪物传递词条buff数据
mon.load(pos, scale, uuid, is_boss, is_call, lv, buffData);

View File

@@ -87,15 +87,35 @@ export class SkillCom extends CCComp {
collider.group = this.group;
collider.on(Contact2DType.BEGIN_CONTACT, this.onBeginContact, this);
}
let bm=this.node.getComponent(BezierMove)
// console.log(this.group +"技能 collider ",collider);
switch(SkillSet[this.s_uuid].AType){
case AType.parabolic:
this.node.angle +=10
let bm=this.node.getComponent(BezierMove)
// bm.speed=700
if(this.group==BoxSet.MONSTER) bm.controlPointSide=-1
if(this.group==BoxSet.MONSTER) {bm.controlPointSide=-1 }
bm.rotationSmoothness=0.6
bm.moveTo(this.targetPos)
break;
case AType.linear:
let s_x=this.startPos.x
let s_y=this.startPos.y
let t_x=this.targetPos.x
let t_y=this.targetPos.y
// 设定目标x
this.targetPos.x = 400;
if(this.group == BoxSet.MONSTER) {
bm.controlPointSide = -1;
this.targetPos.x = -400;
}
// 计算斜率
const k = (t_y - s_y) / (t_x - s_x);
// 按直线公式计算新的y
this.targetPos.y = k * (this.targetPos.x - s_x) + s_y;
bm.controlPointOffset=0
bm.rotationSmoothness=0.6
bm.moveTo(this.targetPos);
break;
case AType.StartEnd:
// 2段位移先升高然后移到目的地
this.executeTwoStageMovement();
@@ -280,7 +300,7 @@ export class SkillCom extends CCComp {
this.range_damage()
}
//直线移动
if(this.AType == AType.linear) this.startLinearMove(deltaTime);
// if(this.AType == AType.linear) this.startLinearMove(deltaTime);
this.toDestroy();
}