diff --git a/assets/resources/game/skills/fire.prefab b/assets/resources/game/skills/fire.prefab index 9d52a095..01793ce8 100644 --- a/assets/resources/game/skills/fire.prefab +++ b/assets/resources/game/skills/fire.prefab @@ -92,7 +92,7 @@ }, "_lpos": { "__type__": "cc.Vec3", - "x": -52.535, + "x": 0, "y": 0, "z": 0 }, @@ -287,13 +287,13 @@ "_restitution": 0, "_offset": { "__type__": "cc.Vec2", - "x": 1.2, - "y": 0.3 + "x": 0, + "y": 0 }, "_size": { "__type__": "cc.Size", - "width": 28.9, - "height": 86.1 + "width": 15, + "height": 80 }, "_id": "" }, diff --git a/assets/resources/game/skills/ice.prefab b/assets/resources/game/skills/ice.prefab index 57fc1082..1e6c754a 100644 --- a/assets/resources/game/skills/ice.prefab +++ b/assets/resources/game/skills/ice.prefab @@ -92,7 +92,7 @@ }, "_lpos": { "__type__": "cc.Vec3", - "x": -52.535, + "x": 0, "y": 0, "z": 0 }, @@ -287,13 +287,13 @@ "_restitution": 0, "_offset": { "__type__": "cc.Vec2", - "x": 15.2, - "y": 0.3 + "x": 0, + "y": 0 }, "_size": { "__type__": "cc.Size", - "width": 28.9, - "height": 86.1 + "width": 15, + "height": 80 }, "_id": "" }, diff --git a/assets/script/game/common/config/BoxSet.ts b/assets/script/game/common/config/BoxSet.ts index af5cea13..778ca7c4 100644 --- a/assets/script/game/common/config/BoxSet.ts +++ b/assets/script/game/common/config/BoxSet.ts @@ -29,8 +29,10 @@ export enum BoxSet { //游戏地平线 GAME_LINE = 10, CSKILL_X = 280, - CSKILL_Y = 420, + CSKILL_Y = 300, //攻击距离 ATK_RANGE_X = 85, MOVE_RANGE_X = 20, + MAX_SKILL_SY = 50, + MAX_SKILL_BY = 80, } \ No newline at end of file diff --git a/assets/script/game/monster/MonsterViewComp.ts b/assets/script/game/monster/MonsterViewComp.ts index e6b36a68..2cb4f15a 100644 --- a/assets/script/game/monster/MonsterViewComp.ts +++ b/assets/script/game/monster/MonsterViewComp.ts @@ -197,7 +197,7 @@ export class MonsterViewComp extends CCComp { do_max_skill(){ let skill = ecs.getEntity(Skill); let x=32 - let pos = v3(35*this.scale,40) + let pos = v3(-40*this.scale,BoxSet.MAX_SKILL_SY) let scale = this.scale let speed =smc.skills[this.max_skill_uuid].speed; let dis = smc.skills[this.max_skill_uuid].dis; diff --git a/assets/script/game/skills/Skill.ts b/assets/script/game/skills/Skill.ts index 0fbf4702..8e503bce 100644 --- a/assets/script/game/skills/Skill.ts +++ b/assets/script/game/skills/Skill.ts @@ -29,30 +29,35 @@ export class Skill extends ecs.Entity { this.remove(SkillCom); super.destroy(); } - load(pos: Vec3 = Vec3.ZERO,speed:number = 100,dis:number = 50,scale:number = 1,parent:Node,uuid:number=1001,atk:number =10,angle = 0,t_pos:Vec3 = null) { - var path = "game/skills/"+smc.skills[uuid].sp_name; - var prefab: Prefab = oops.res.get(path, Prefab)!; - var node = instantiate(prefab); - // console.log("load skill parent.position :",parent.position) - pos=v3(parent.position.x+pos.x,parent.position.y+pos.y) - node.parent = parent.parent; - node.setScale(scale,1) - //转换pos为世界坐标 - node.setPosition(pos) - var sv = node.getComponent(SkillCom)!; - sv.speed = speed; - sv.dis = dis; - sv.scale = scale; - sv.atk = atk; - sv.angle = angle; - sv.t_pos = t_pos; // 目标增量 - sv.type = smc.skills[uuid].type; - sv.box_tag= BoxSet.SKILL_TAG; - if(scale == 1){ - sv.box_group=BoxSet.HERO - }else{ - sv.box_group=BoxSet.MONSTER - } - this.add(sv); + load(pos: Vec3 = Vec3.ZERO,speed:number = 100, + dis:number = 50,scale:number = 1,parent:Node, + uuid:number=1001,atk:number =10,angle = 0, + t_pos:Vec3 = null,run_type:number=0) + { + var path = "game/skills/"+smc.skills[uuid].sp_name; + var prefab: Prefab = oops.res.get(path, Prefab)!; + var node = instantiate(prefab); + // console.log("load skill parent.position :",parent.position) + pos=v3(parent.position.x+pos.x,parent.position.y+pos.y) + node.parent = parent.parent; + node.setScale(scale,1) + //转换pos为世界坐标 + node.setPosition(pos) + var sv = node.getComponent(SkillCom)!; + sv.speed = speed; + sv.dis = dis; + sv.scale = scale; + sv.atk = atk; + sv.angle = angle; + sv.t_pos = t_pos; // 目标增量 + sv.type = smc.skills[uuid].type; + sv.box_tag= BoxSet.SKILL_TAG; + sv.run_type== run_type; + if(scale == 1){ + sv.box_group=BoxSet.HERO + }else{ + sv.box_group=BoxSet.MONSTER + } + this.add(sv); } } diff --git a/assets/script/game/skills/SkillCom.ts b/assets/script/game/skills/SkillCom.ts index 99866151..8edc7b35 100644 --- a/assets/script/game/skills/SkillCom.ts +++ b/assets/script/game/skills/SkillCom.ts @@ -22,6 +22,7 @@ export class SkillCom extends CCComp { dis:number = 80; scale:number = 1; atk:number = 10; + atk_count:number = 0; angle:number = 0; t_pos:Vec3 = null; // 目标增量 is_destroy:boolean = false; @@ -29,6 +30,8 @@ export class SkillCom extends CCComp { box_tag:number=0; type:number = 1; time:Timer = new Timer(0.01); + run_type:number = 0; // 0直线,1贝塞尔曲线 2 不动 + in_time:number = 1.5; // 不动技能持续时间 start() { // console.log("skill start parent :",this.node.parent) // console.log("skill start t position :",this.t_pos) @@ -46,48 +49,69 @@ export class SkillCom extends CCComp { collider.on(Contact2DType.POST_SOLVE, this.onPostSolve, this); } if(this.t_pos){ - this.x_speed=this.t_pos.x; - this.y_speed=this.t_pos.y; + this.x_speed=Math.cos(this.angle * Math.PI / 180) * this.speed-30*this.scale; + this.y_speed=Math.sin(this.angle * Math.PI / 180) * this.speed; }else{ - let s_pos = v3(this.node.position.x,this.node.position.y) - let c_pos = v3(this.node.position.x,this.node.position.y+200) - let e_pos = v3(this.node.position.x+100*this.scale,BoxSet.GAME_LINE-50) - SkillCom.bezierTo(this.node,2,s_pos,c_pos,e_pos,{onUpdate: (target: Vec3, ratio: number) => { - } - }).start(); + this.x_speed=this.speed + this.y_speed=0 + } + if(this.run_type == 1){ + let s_pos = v3(this.node.position.x,this.node.position.y) + let c_pos = v3(this.node.position.x,this.node.position.y) + let e_pos = v3(this.node.position.x+this.dis*this.scale,BoxSet.GAME_LINE-50) + SkillCom.bezierTo(this.node,2,s_pos,c_pos,e_pos,{onUpdate: (target: Vec3, ratio: number) => { + } + }).start(); + } + if(this.run_type == 2){ + tween(this.node).to( this.in_time, + { position: new Vec3(this.node.position.x,this.node.position.y) }, + { + onComplete: (target?: object) => { + this.is_destroy=true + }, + } + ).start(); + } + if(this.run_type == 0){ + if(this.t_pos){ + let l_x=Math.cos(this.angle * Math.PI / 180) * 50; + let l_y=Math.sin(this.angle * Math.PI / 180) * 50; + let squaredDistance = this.t_pos.x * this.t_pos.x + this.t_pos.y * this.t_pos.y; + let distance = Math.sqrt(squaredDistance); + let time = distance / this.speed-0.2; + //通过欧拉角 延长 目标点 增量 + // this.t_pos.x=Math.cos(this.angle * Math.PI / 180) * this.dis; + // this.t_pos.y=Math.sin(this.angle * Math.PI / 180) * this.dis; + let e_pos=v3(this.node.position.x+l_x+this.t_pos.x,this.node.position.y+this.t_pos.y) + tween(this.node).to( 0.7,{ angle:this.angle,position: e_pos}, + { + onUpdate: (target: Vec3, ratio: number) => { // onUpdate 接受当前缓动的进度 + // 将缓动系统计算出的结果赋予 node 的位置 + }, + onComplete: (target?: object) => { + this.is_destroy=true + }, + } + ).start(); + }else{ + tween(this.node).to( this.dis/this.speed, + { position: new Vec3(this.node.position.x+this.scale*this.dis,this.node.position.y) }, + { + onComplete: (target?: object) => { + this.is_destroy=true + }, + } + ).start(); + } } - - // if(this.t_pos){ - // //通过欧拉角 延长 目标点 增量 - // // this.t_pos.x=Math.cos(this.angle * Math.PI / 180) * this.dis; - // // this.t_pos.y=Math.sin(this.angle * Math.PI / 180) * this.dis; - - // tween(this.node).to( 0.5,{ angle:this.angle,position: this.t_pos}, - // { - // onUpdate: (target: Vec3, ratio: number) => { // onUpdate 接受当前缓动的进度 - // // 将缓动系统计算出的结果赋予 node 的位置 - // }, - // onComplete: (target?: object) => { - // this.is_destroy=true - // }, - // } - // ).start(); - // }else{ - // tween(this.node).to( this.dis/this.speed, - // { position: new Vec3(this.node.position.x+this.scale*this.dis,this.node.position.y) }, - // { - // onComplete: (target?: object) => { - // this.is_destroy=true - // }, - // } - // ).start(); - // } } onBeginContact (selfCollider: Collider2D, otherCollider: Collider2D, contact: IPhysics2DContact | null) { if(otherCollider.group != selfCollider.group&&otherCollider.tag !=BoxSet.ATK_RANGE&&otherCollider.tag !=BoxSet.SKILL_TAG){ + this.atk_count+=1 // console.log("skill onBeginContact",selfCollider.group,otherCollider.group) - if(this.type==1){ + if(this.type==1 ){ this.is_destroy=true } } @@ -123,19 +147,21 @@ export class SkillCom extends CCComp { // this.node.setScale(v3(this.scale,this.node.scale.y,this.node.scale.z)) // this.move(deltaTime) this.toDestroy() - this.t_move(deltaTime) - + // this.t_move(deltaTime) if (this.node.position.x > 400||this.node.position.x < -400||this.node.position.y > 1000||this.node.position.y < BoxSet.GAME_LINE) { this.is_destroy=true } } t_move(dt: number){ - if(!this.t_pos){ + if( this.run_type!=0){ return } this.node.setPosition(v3(this.node.position.x+this.x_speed*dt*this.scale,this.node.position.y+this.y_speed*dt)) } line_move(dt: number) { + if( this.run_type!=0 && this.t_pos){ + return + } this.node.setPosition(v3(this.node.position.x+dt*this.speed*this.scale,this.node.position.y)) } bezier(t:number){ diff --git a/assets/script/game/skills/TooltipCom.ts b/assets/script/game/skills/TooltipCom.ts index 2361866f..b63d91cb 100644 --- a/assets/script/game/skills/TooltipCom.ts +++ b/assets/script/game/skills/TooltipCom.ts @@ -49,7 +49,7 @@ export class TooltipCom extends CCComp { } update(deltaTime: number) { - this.node.setPosition(v3(this.node.position.x,this.node.position.y+deltaTime*10)) + this.node.setPosition(v3(this.node.position.x+deltaTime*20,this.node.position.y+deltaTime*50)) if(this.alive_time >=0){ this.alive_time -= deltaTime; }else{