dd
This commit is contained in:
@@ -95,6 +95,10 @@ export class SingletonModuleComp extends ecs.Comp {
|
|||||||
heros_dead:any = []
|
heros_dead:any = []
|
||||||
hero_pos:any=[]
|
hero_pos:any=[]
|
||||||
enemy_pos:any =[]
|
enemy_pos:any =[]
|
||||||
|
hero_front_x:number = 0;
|
||||||
|
hero_back_x:number = 0;
|
||||||
|
mon_front_x:number = 0;
|
||||||
|
mon_back_x:number = 0;
|
||||||
vmdata: any = {
|
vmdata: any = {
|
||||||
name : "纸片精灵大乱斗",
|
name : "纸片精灵大乱斗",
|
||||||
game_over:false,
|
game_over:false,
|
||||||
|
|||||||
@@ -1,19 +1,16 @@
|
|||||||
/*
|
/*
|
||||||
type :
|
type :
|
||||||
1: 远距离攻击,碰撞后 结束
|
1:最前排
|
||||||
11:远距离攻击,从天降下
|
2:最后排
|
||||||
12:远距离攻击,目标点显现
|
3: 最少血
|
||||||
2: 远距离攻击,碰撞后 持续,直到技能结束
|
4:最高血
|
||||||
3: 远距离攻击,碰撞后 持续,带击退功能
|
5:近战
|
||||||
4: 双技能技能,1技能结束后,触发2技能
|
6:远程
|
||||||
5: 特殊技能,触发特殊弹窗选项
|
7: 辅助
|
||||||
6: 近距离攻击,碰撞后
|
8: 随机
|
||||||
9: buff物品,
|
|
||||||
91: 单体buff,加最少血,临时
|
|
||||||
92:单体buff,随机或自己,临时
|
|
||||||
93: 群体buff物品
|
|
||||||
94:role buff
|
|
||||||
tg: 对象,0 自己,1:同伴 ,2 自己和同伴,3:敌人,4,自己和对人
|
tg: 对象,0 自己,1:同伴 ,2 自己和同伴,3:敌人,4,自己和对人
|
||||||
|
|
||||||
dis: 是否移动 1 移动 0 原地
|
dis: 是否移动 1 移动 0 原地
|
||||||
sd: 卡片技能图标持续时间
|
sd: 卡片技能图标持续时间
|
||||||
cd: 卡片技能释放本技能cd
|
cd: 卡片技能释放本技能cd
|
||||||
@@ -24,56 +21,79 @@ sk_uuid:子技能id
|
|||||||
sk_count:子技能个数
|
sk_count:子技能个数
|
||||||
sp_name : 预制体名称
|
sp_name : 预制体名称
|
||||||
path: 图片地址
|
path: 图片地址
|
||||||
run:number = 0; // 0有目标 带方向,1贝塞尔曲线 2 不动 ,3 直线
|
run:number = 0;0:碰撞不消亡 1:碰撞即消亡
|
||||||
debuff: 0depb:50,:无,1:冰,2:灼烧,3:眩晕,4:降低攻击,5:降低hp,6:降低防御,7:吸血,8:击退
|
debuff: 0depb:50,:无,1:冰,2:灼烧,3:眩晕,4:降低攻击,5:降低hp,6:降低防御,7:吸血,8:击退
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
export enum SkTG {
|
||||||
|
self = 0,
|
||||||
|
friend= 1,
|
||||||
|
team= 2,
|
||||||
|
enemy= 3,
|
||||||
|
all= 4,
|
||||||
|
}
|
||||||
|
export enum SkType {
|
||||||
|
frontRow = 1,
|
||||||
|
backRow = 2,
|
||||||
|
leastHealth = 3,
|
||||||
|
highestHealth = 4,
|
||||||
|
melee = 5,
|
||||||
|
ranged = 6,
|
||||||
|
support = 7,
|
||||||
|
random = 8,
|
||||||
|
all = 9,
|
||||||
|
}
|
||||||
|
export enum skRun {
|
||||||
|
runing = 0,
|
||||||
|
dead = 1,
|
||||||
|
}
|
||||||
export const SkillSet={
|
export const SkillSet={
|
||||||
6001:{uuid: 6001,path: "6001",type: 1,tg:3,debuff:0,depb:50,debtime:2,derate:1,name: "寒冰弹",sp_name:"ball_blue",info:"释放一个火球术攻击敌人",
|
6001:{uuid: 6001,path: "6001",run:1,type:1,tg:3,debuff:0,depb:50,debtime:2,derate:1,name: "寒冰弹",sp_name:"ball_blue",info:"释放一个火球术攻击敌人",
|
||||||
in:0.8,count:1,apup:0,ap:1,hp:0,cd:1,shield:0,speed:450, sonsk:0},
|
in:0.8,count:1,apup:0,ap:1,hp:0,cd:1,shield:0,speed:450, sonsk:0},
|
||||||
|
|
||||||
6002:{uuid: 6002,path: "6002",type: 1,tg:3,debuff:0,depb:50,debtime:2,derate:1,name: "火焰弹",sp_name:"ball_red",info:"释放一个火球术攻击敌人",
|
6002:{uuid: 6002,path: "6002",run:1,type:1,tg:3,debuff:0,depb:50,debtime:2,derate:1,name: "火焰弹",sp_name:"ball_red",info:"释放一个火球术攻击敌人",
|
||||||
in:0.8,count:1,apup:0,ap:1,hp:0,cd:1,shield:0,speed:450, sonsk:0},
|
in:0.8,count:1,apup:0,ap:1,hp:0,cd:1,shield:0,speed:450, sonsk:0},
|
||||||
|
|
||||||
6003:{uuid: 6003,path: "6003",type: 1,tg:3,debuff:0,depb:50,debtime:2,derate:1,name: "魔法弹",sp_name:"ball_green",info:"释放一个火球术攻击敌人",
|
6003:{uuid: 6003,path: "6003",run:1,type:1,tg:3,debuff:0,depb:50,debtime:2,derate:1,name: "魔法弹",sp_name:"ball_green",info:"释放一个火球术攻击敌人",
|
||||||
in:0.8,count:1,apup:0,ap:1,hp:0,cd:1,shield:0,speed:450, sonsk:0},
|
in:0.8,count:1,apup:0,ap:1,hp:0,cd:1,shield:0,speed:450, sonsk:0},
|
||||||
|
|
||||||
6004:{uuid: 6004,path: "6004",type: 1,tg:3,debuff:0,depb:50,debtime:2,derate:1,name: "圣光弹",sp_name:"ball_yellow",info:"释放一个火球术攻击敌人",
|
6004:{uuid: 6004,path: "6004",run:1,type:1,tg:3,debuff:0,depb:50,debtime:2,derate:1,name: "圣光弹",sp_name:"ball_yellow",info:"释放一个火球术攻击敌人",
|
||||||
in:0.8,count:1,apup:0,ap:1,hp:0,cd:1,shield:0,speed:450, sonsk:0},
|
in:0.8,count:1,apup:0,ap:1,hp:0,cd:1,shield:0,speed:450, sonsk:0},
|
||||||
|
|
||||||
6005:{uuid: 6005,path: "6005",type: 1,tg:3,debuff:0,depb:50,debtime:2,derate:1,name: "无形剑气",sp_name:"patk",info:"释放无形剑气攻击前方直线100码的敌人",
|
6005:{uuid: 6005,path: "6005",run:1,type:1,tg:3,debuff:0,depb:50,debtime:2,derate:1,name: "无形剑气",sp_name:"patk",info:"释放无形剑气攻击前方直线100码的敌人",
|
||||||
in:0.8,count:1,apup:0,ap:1,hp:0,cd:1,shield:0,speed:450,sonsk:0},
|
in:0.8,count:1,apup:0,ap:1,hp:0,cd:1,shield:0,speed:450,sonsk:0},
|
||||||
|
|
||||||
6006:{uuid: 6006,path: "6006",type: 1,tg:3,debuff:0,depb:50,debtime:2,derate:1,name: "射击",sp_name:"arrow",info:"释放无形剑气攻击前方直线100码的敌人",
|
6006:{uuid: 6006,path: "6006",run:1,type:1,tg:3,debuff:0,depb:50,debtime:2,derate:1,name: "射击",sp_name:"arrow",info:"释放无形剑气攻击前方直线100码的敌人",
|
||||||
in:0.8,count:1,apup:0,ap:1,hp:0,cd:1,shield:0,speed:450,sonsk:0},
|
in:0.8,count:1,apup:0,ap:1,hp:0,cd:1,shield:0,speed:450,sonsk:0},
|
||||||
|
|
||||||
6011:{uuid: 6011,path: "6011",type: 2,tg:3,debuff:0,depb:50,debtime:2,derate:1,name: "烈火呼吸",sp_name:"firequan",info:"释放烈火剑气攻击前方地方,对前方敌人造成3段伤害",
|
6011:{uuid: 6011,path: "6011",run:0,type:1, tg:3,debuff:0,depb:50,debtime:2,derate:1,name: "烈火呼吸",sp_name:"firequan",info:"释放烈火剑气攻击前方地方,对前方敌人造成3段伤害",
|
||||||
in:3,count:1,apup:0,ap:2,hp:0,cd:0.5,shield:0,speed:100,sonsk:0},
|
in:3,count:1,apup:0,ap:2,hp:0,cd:0.5,shield:0,speed:100,sonsk:0},
|
||||||
|
|
||||||
6012:{uuid: 6012,path: "6012",type: 2,tg:3,debuff:2,depb:50,debtime:6,derate:1,name: "大火球",sp_name:"fire",info:"释放有形剑气攻击前方直线300码的敌人",
|
6012:{uuid: 6012,path: "6012",run:0,type:1, tg:3,debuff:2,depb:50,debtime:6,derate:1,name: "大火球",sp_name:"fire",info:"释放有形剑气攻击前方直线300码的敌人",
|
||||||
in:1,count:1,apup:0,ap:1,hp:0,cd:1,shield:0,speed:450,sonsk:0},
|
in:1,count:1,apup:0,ap:1,hp:0,cd:1,shield:0,speed:450,sonsk:0},
|
||||||
|
|
||||||
6013:{uuid: 6013,path: "6013",type: 2,tg:3,debuff:7,depb:50,debtime:2,derate:0.01,name: "火墙",sp_name:"fires",info:"释放有形剑气攻击前方直线300码的敌人",
|
6013:{uuid: 6013,path: "6013",run:0,type:1, tg:3,debuff:7,depb:50,debtime:2,derate:0.01,name: "火墙",sp_name:"fires",info:"释放有形剑气攻击前方直线300码的敌人",
|
||||||
in:10,count:1,apup:0,ap:1,hp:0,cd:1,shield:0,speed:450,sonsk:0},
|
in:10,count:1,apup:0,ap:1,hp:0,cd:1,shield:0,speed:450,sonsk:0},
|
||||||
|
|
||||||
6014:{uuid: 6014,path: "6014",type: 2,tg:3,debuff:1,depb:50,debtime:2,derate:1,name: "冰破术",sp_name:"ice",info:"释放有形剑气攻击前方直线300码的敌人",
|
6014:{uuid: 6014,path: "6014",run:0,type:1, tg:3,debuff:1,depb:50,debtime:2,derate:1,name: "冰破术",sp_name:"ice",info:"释放有形剑气攻击前方直线300码的敌人",
|
||||||
in:1,count:1,apup:0,ap:2,hp:0,cd:1,shield:0,speed:450,sonsk:0},
|
in:1,count:1,apup:0,ap:2,hp:0,cd:1,shield:0,speed:450,sonsk:0},
|
||||||
|
|
||||||
6015:{uuid: 6015,path: "6015",type: 2,tg:3,debuff:3,depb:50,debtime:6,derate:1,name: "火焰射击",sp_name:"arrow_yellow",info:"释放有形剑气攻击前方直线300码的敌人",
|
6015:{uuid: 6015,path: "6015",run:0,type:1, tg:3,debuff:3,depb:50,debtime:6,derate:1,name: "火焰射击",sp_name:"arrow_yellow",info:"释放有形剑气攻击前方直线300码的敌人",
|
||||||
in:1,count:1,apup:0,ap:2,hp:0,cd:1,shield:0,speed:450,sonsk:0},
|
in:1,count:1,apup:0,ap:2,hp:0,cd:1,shield:0,speed:450,sonsk:0},
|
||||||
|
|
||||||
6016:{uuid: 6016,path: "6016",type: 2,tg:3,debuff:8,depb:50,debtime:6,derate:1,name: "龙卷风",sp_name:"bwind",info:"释放有形剑气攻击前方直线300码的敌人",
|
6016:{uuid: 6016,path: "6016",run:0,type:1, tg:3,debuff:8,depb:50,debtime:6,derate:1,name: "龙卷风",sp_name:"bwind",info:"释放有形剑气攻击前方直线300码的敌人",
|
||||||
in:1,count:1,apup:0,ap:2,hp:0,cd:1,shield:0,speed:300,sonsk:0},
|
in:1,count:1,apup:0,ap:2,hp:0,cd:1,shield:0,speed:300,sonsk:0},
|
||||||
|
|
||||||
6017:{uuid: 6017,path: "6017",type: 91,tg:2,debuff:0,depb:50,debtime:2,derate:1,name: "治愈术",sp_name:"heath",info:"释放一个寒冰箭攻击敌人",
|
6017:{uuid: 6017,path: "6017",run:0,type:1, tg:2,debuff:0,depb:50,debtime:2,derate:1,name: "治愈术",sp_name:"heath",info:"释放一个寒冰箭攻击敌人",
|
||||||
in:10,count:1,apup:0,ap:1,hp:3,cd:1,shield:0,speed:450, sonsk:0},
|
in:10,count:1,apup:0,ap:1,hp:3,cd:1,shield:0,speed:450, sonsk:0},
|
||||||
|
|
||||||
6018:{uuid: 6018,path: "6018",type: 91,tg:0,debuff:0,depb:50,debtime:2,derate:1,name: "魔法盾",sp_name:"shield",info:"释放一个寒冰箭攻击敌人",
|
6018:{uuid: 6018,path: "6018",run:0,type:1, tg:0,debuff:0,depb:50,debtime:2,derate:1,name: "魔法盾",sp_name:"shield",info:"释放一个寒冰箭攻击敌人",
|
||||||
in:0.8,count:1,apup:0,ap:1,hp:0,cd:1,shield:1,speed:450, sonsk:0},
|
in:0.8,count:1,apup:0,ap:1,hp:0,cd:1,shield:1,speed:450, sonsk:0},
|
||||||
|
|
||||||
6019:{uuid: 6019,path: "6019",type: 91,tg:0,debuff:0,depb:50,debtime:2,derate:1,name: "狂暴",sp_name:"atkup",info:"释放一个寒冰箭攻击敌人",
|
6019:{uuid: 6019,path: "6019",run:0,type:1, tg:0,debuff:0,depb:50,debtime:2,derate:1,name: "狂暴",sp_name:"atkup",info:"释放一个寒冰箭攻击敌人",
|
||||||
in:0.8,count:1,apup:0,ap:1,hp:0,cd:1,shield:0,speed:450, sonsk:0},
|
in:0.8,count:1,apup:0,ap:1,hp:0,cd:1,shield:0,speed:450, sonsk:0},
|
||||||
|
|
||||||
6020:{uuid: 6020,path: "6014",type: 81,tg:3,debuff:0,depb:50,debtime:0,derate:0,name: "阻击",sp_name:"okill",info:"释放有形剑气攻击前方直线300码的敌人",
|
6020:{uuid: 6020,path: "6014",run:2,type:2,tg:3,debuff:0,depb:50,debtime:0,derate:0,name: "阻击",sp_name:"okill",info:"释放有形剑气攻击前方直线300码的敌人",
|
||||||
in:1,count:1,apup:0,ap:2,hp:0,cd:1,shield:0,speed:450,sonsk:0},
|
in:1,count:1,apup:0,ap:2,hp:0,cd:1,shield:0,speed:450,sonsk:0},
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -46,6 +46,16 @@ import { Talents } from "./TalentSet"
|
|||||||
* lv : 1 精英 2史诗 3 传说
|
* lv : 1 精英 2史诗 3 传说
|
||||||
* kind :1 火 2 水 3 气
|
* kind :1 火 2 水 3 气
|
||||||
**/
|
**/
|
||||||
|
export enum HeroKind {
|
||||||
|
fire = 1,
|
||||||
|
water = 2,
|
||||||
|
air = 3,
|
||||||
|
}
|
||||||
|
export enum HeroType {
|
||||||
|
fire = 1,
|
||||||
|
water = 2,
|
||||||
|
air = 3,
|
||||||
|
}
|
||||||
export const HeroInfo = {
|
export const HeroInfo = {
|
||||||
//坦克, 高防 ,攻击时有可能冲击目标,造成70% 攻击伤害
|
//坦克, 高防 ,攻击时有可能冲击目标,造成70% 攻击伤害
|
||||||
5001: {
|
5001: {
|
||||||
|
|||||||
@@ -17,13 +17,15 @@ import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/O
|
|||||||
import { Skill } from "../skills/Skill";
|
import { Skill } from "../skills/Skill";
|
||||||
import { Timer } from "../../../../extensions/oops-plugin-framework/assets/core/common/timer/Timer";
|
import { Timer } from "../../../../extensions/oops-plugin-framework/assets/core/common/timer/Timer";
|
||||||
import { SkillCom } from "../skills/SkillCom";
|
import { SkillCom } from "../skills/SkillCom";
|
||||||
import { SkillSet } from "../common/config/SkillSet";
|
import { SkillSet, SkTG, SkType } from "../common/config/SkillSet";
|
||||||
import { Tooltip } from "../skills/Tooltip";
|
import { Tooltip } from "../skills/Tooltip";
|
||||||
import { RandomManager } from "../../../../extensions/oops-plugin-framework/assets/core/common/random/RandomManager";
|
import { RandomManager } from "../../../../extensions/oops-plugin-framework/assets/core/common/random/RandomManager";
|
||||||
import { TimerManager } from "../../../../extensions/oops-plugin-framework/assets/core/common/timer/TimerManager";
|
import { TimerManager } from "../../../../extensions/oops-plugin-framework/assets/core/common/timer/TimerManager";
|
||||||
import { HeroSet } from "../common/config/heroSet";
|
import { HeroSet } from "../common/config/heroSet";
|
||||||
import { BuffComp } from "./BuffComp";
|
import { BuffComp } from "./BuffComp";
|
||||||
import { BossList } from "../common/config/MissionSet";
|
import { BossList } from "../common/config/MissionSet";
|
||||||
|
import { Monster } from "./Mon";
|
||||||
|
import { MonModelComp } from "./MonModelComp";
|
||||||
const { ccclass, property } = _decorator;
|
const { ccclass, property } = _decorator;
|
||||||
|
|
||||||
/** 角色显示组件 */
|
/** 角色显示组件 */
|
||||||
@@ -272,28 +274,30 @@ export class HeroViewComp extends CCComp {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
check_enemy_alive(){
|
check_enemy_alive(){
|
||||||
let dir = 720
|
// let dir = 720
|
||||||
let enemys=smc.enemy_pos
|
// let enemys=smc.enemy_pos
|
||||||
this.enemy = v3(720,this.node.position.y)
|
// this.enemy = v3(720,this.node.position.y)
|
||||||
|
// if(this.box_group == BoxSet.MONSTER){
|
||||||
|
// enemys=smc.hero_pos
|
||||||
|
// // console.log("MONSTER enemys",enemys);
|
||||||
|
// this.enemy=v3(-720,this.node.position.y)
|
||||||
|
// }
|
||||||
|
// for (let i = 0; i < enemys.length; i++) {
|
||||||
|
// let ho:any = enemys[i];
|
||||||
|
// let x=Math.abs(ho.x-this.node.position.x)
|
||||||
|
// if(x < dir){
|
||||||
|
// dir = x
|
||||||
|
// this.enemy = ho
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
let dir = Math.abs(smc.mon_front_x-this.node.position.x)
|
||||||
if(this.box_group == BoxSet.MONSTER){
|
if(this.box_group == BoxSet.MONSTER){
|
||||||
enemys=smc.hero_pos
|
dir = Math.abs(smc.hero_front_x-this.node.position.x)
|
||||||
// console.log("MONSTER enemys",enemys);
|
|
||||||
this.enemy=v3(-720,this.node.position.y)
|
|
||||||
}
|
}
|
||||||
for (let i = 0; i < enemys.length; i++) {
|
|
||||||
let ho:any = enemys[i];
|
|
||||||
let x=Math.abs(ho.x-this.node.position.x)
|
|
||||||
if(x < dir){
|
|
||||||
dir = x
|
|
||||||
this.enemy = ho
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(dir < this.dis){
|
if(dir < this.dis){
|
||||||
this.is_atking=true
|
this.is_atking=true
|
||||||
if(this.dis-dir > 80 &&this.type > 0 ) this.stop_cd = 0.1
|
if(this.dis-dir > 80 &&this.type > 0 ) this.stop_cd = 0.1
|
||||||
if(dir < 65 &&this.type == 0 ) this.stop_cd = 0.1
|
if(dir < 65 &&this.type == 0 ) this.stop_cd = 0.1
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
this.is_atking=false
|
this.is_atking=false
|
||||||
}
|
}
|
||||||
@@ -322,6 +326,14 @@ export class HeroViewComp extends CCComp {
|
|||||||
console.log(this.hero_name+":"+this.uuid+"enemy ="+this.enemy.x+" x"+this.node.position.x+" t_pos"+t_pos);
|
console.log(this.hero_name+":"+this.uuid+"enemy ="+this.enemy.x+" x"+this.node.position.x+" t_pos"+t_pos);
|
||||||
return t_pos
|
return t_pos
|
||||||
}
|
}
|
||||||
|
get_back_enemy_pos(hero:any){
|
||||||
|
let t_pos:Vec3 = v3(720,0)
|
||||||
|
if(this.enemy){
|
||||||
|
t_pos = v3(this.enemy.x,this.enemy.y)
|
||||||
|
}
|
||||||
|
console.log(this.hero_name+":"+this.uuid+"enemy ="+this.enemy.x+" x"+this.node.position.x+" t_pos"+t_pos);
|
||||||
|
return {t_pos}
|
||||||
|
}
|
||||||
get_hero_pos(hero:any){
|
get_hero_pos(hero:any){
|
||||||
let t_pos:Vec3 = v3(-720,0)
|
let t_pos:Vec3 = v3(-720,0)
|
||||||
if(!hero.node.isValid){
|
if(!hero.node.isValid){
|
||||||
@@ -530,21 +542,20 @@ export class HeroViewComp extends CCComp {
|
|||||||
this.as.max()
|
this.as.max()
|
||||||
this.at = 0;
|
this.at = 0;
|
||||||
this.BUFFCOMP.tooltip(3,SkillSet[skill].name,skill);
|
this.BUFFCOMP.tooltip(3,SkillSet[skill].name,skill);
|
||||||
|
|
||||||
switch (SkillSet[skill].tg) {
|
switch (SkillSet[skill].tg) {
|
||||||
case 0: //自己
|
case SkTG.self: //自己
|
||||||
this.do_add_buff(this.node.getComponent(HeroViewComp),skill)
|
this.do_add_buff(this.node.getComponent(HeroViewComp),skill)
|
||||||
break;
|
break;
|
||||||
case 1: //伙伴
|
case SkTG.friend: //伙伴
|
||||||
this.check_other_buff(skill)
|
this.check_other_buff(skill)
|
||||||
break;
|
break;
|
||||||
case 2: //自己和伙伴
|
case SkTG.team: //自己和伙伴
|
||||||
this.do_all_buff(skill)
|
this.do_all_buff(skill)
|
||||||
break;
|
break;
|
||||||
case 3: //敌人
|
case SkTG.enemy: //敌人
|
||||||
this.shoot_enemy(skill)
|
this.shoot_enemy(skill)
|
||||||
break;
|
break;
|
||||||
case 4: //敌人和自己
|
case SkTG.all: //敌人和自己
|
||||||
this.do_add_buff(this.node.getComponent(HeroViewComp),skill)
|
this.do_add_buff(this.node.getComponent(HeroViewComp),skill)
|
||||||
this.shoot_enemy(skill)
|
this.shoot_enemy(skill)
|
||||||
break;
|
break;
|
||||||
@@ -555,9 +566,15 @@ export class HeroViewComp extends CCComp {
|
|||||||
check_other_buff(skill:number){
|
check_other_buff(skill:number){
|
||||||
let heros:any = ecs.query(ecs.allOf(HeroModelComp));
|
let heros:any = ecs.query(ecs.allOf(HeroModelComp));
|
||||||
let least_hp:number=0
|
let least_hp:number=0
|
||||||
|
let hight_hp:number=9999999999
|
||||||
|
let right_x:number=360
|
||||||
|
let left_x:number=-360
|
||||||
|
if(this.box_group==BoxSet.MONSTER){
|
||||||
|
heros=ecs.query(ecs.allOf(MonModelComp))
|
||||||
|
}
|
||||||
let t_hero:any= null
|
let t_hero:any= null
|
||||||
if (heros.length > 0) {
|
if (heros.length > 0) {
|
||||||
if(SkillSet[skill].type==92){ //随机添加buff
|
if(SkillSet[skill].type==SkType.random){ //随机添加buff
|
||||||
let i = RandomManager.instance.getRandomInt(0,heros.length-1,3)
|
let i = RandomManager.instance.getRandomInt(0,heros.length-1,3)
|
||||||
while(!heros[i].HeroView){
|
while(!heros[i].HeroView){
|
||||||
i = RandomManager.instance.getRandomInt(0,heros.length-1,3)
|
i = RandomManager.instance.getRandomInt(0,heros.length-1,3)
|
||||||
@@ -570,12 +587,68 @@ export class HeroViewComp extends CCComp {
|
|||||||
for (let i = 0; i < heros.length; i++) {
|
for (let i = 0; i < heros.length; i++) {
|
||||||
if(!heros[i].HeroView) continue
|
if(!heros[i].HeroView) continue
|
||||||
let hero = heros[i].HeroView;
|
let hero = heros[i].HeroView;
|
||||||
if(SkillSet[skill].type==91){ //血量最少单体
|
switch(SkillSet[skill].type){
|
||||||
if((hero.rhp_max-hero.hp) > least_hp){
|
case SkType.leastHealth: //血量最少单体
|
||||||
least_hp = (hero.rhp_max-hero.hp)
|
if((hero.rhp_max-hero.hp) > least_hp){
|
||||||
t_hero = hero
|
least_hp = (hero.rhp_max-hero.hp)
|
||||||
}
|
t_hero = hero
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
case SkType.highestHealth: //血量最多单体
|
||||||
|
if((hero.rhp_max-hero.hp) < hight_hp){
|
||||||
|
hight_hp = (hero.rhp_max-hero.hp)
|
||||||
|
t_hero = hero
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SkType.frontRow: //最前排
|
||||||
|
if(hero.node.position.x > left_x){
|
||||||
|
left_x = hero.node.position.x
|
||||||
|
t_hero = hero
|
||||||
|
}
|
||||||
|
if(this.box_group==BoxSet.MONSTER){
|
||||||
|
if(hero.node.position.x < right_x){
|
||||||
|
right_x = hero.node.position.x
|
||||||
|
t_hero = hero
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SkType.backRow: //最后排
|
||||||
|
if(hero.node.position.x < right_x){
|
||||||
|
right_x = hero.node.position.x
|
||||||
|
t_hero = hero
|
||||||
|
}
|
||||||
|
if(this.box_group==BoxSet.MONSTER){
|
||||||
|
if(hero.node.position.x > left_x){
|
||||||
|
left_x = hero.node.position.x
|
||||||
|
t_hero = hero
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// if(SkillSet[skill].type==SkType.leastHealth){ //血量最少单体
|
||||||
|
// if((hero.rhp_max-hero.hp) > least_hp){
|
||||||
|
// least_hp = (hero.rhp_max-hero.hp)
|
||||||
|
// t_hero = hero
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// if(SkillSet[skill].type==SkType.highestHealth){ //血量最多单体
|
||||||
|
// if((hero.rhp_max-hero.hp) < hight_hp){
|
||||||
|
// hight_hp = (hero.rhp_max-hero.hp)
|
||||||
|
// t_hero = hero
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// if(SkillSet[skill].type==SkType.frontRow){ //最前排
|
||||||
|
// if(hero.node.position.x > left_x){
|
||||||
|
// left_x = hero.node.position.x
|
||||||
|
// t_hero = hero
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// if(SkillSet[skill].type==SkType.backRow){ //最后排
|
||||||
|
// if(hero.node.position.x < right_x){
|
||||||
|
// right_x = hero.node.position.x
|
||||||
|
// t_hero = hero
|
||||||
|
// }
|
||||||
|
// }
|
||||||
//todo 最前排 最后排 远程 近战 辅助
|
//todo 最前排 最后排 远程 近战 辅助
|
||||||
}
|
}
|
||||||
if(t_hero){ //存在目标
|
if(t_hero){ //存在目标
|
||||||
@@ -585,7 +658,6 @@ export class HeroViewComp extends CCComp {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
do_all_buff(sk:number){
|
do_all_buff(sk:number){
|
||||||
let skill = ecs.getEntity<Skill>(Skill);
|
let skill = ecs.getEntity<Skill>(Skill);
|
||||||
@@ -602,16 +674,30 @@ export class HeroViewComp extends CCComp {
|
|||||||
shoot_enemy(sk:number,y:number=0,x:number=0){
|
shoot_enemy(sk:number,y:number=0,x:number=0){
|
||||||
// console.log("mon shoot_enemy");
|
// console.log("mon shoot_enemy");
|
||||||
let skill = ecs.getEntity<Skill>(Skill);
|
let skill = ecs.getEntity<Skill>(Skill);
|
||||||
let t_pos=this.get_enemy_pos()
|
let t_pos=v3(smc.mon_front_x,BoxSet.GAME_LINE)
|
||||||
if(SkillSet[sk].type==81){
|
if(this.box_group==BoxSet.MONSTER){
|
||||||
//获取最远敌军位置
|
t_pos=v3(smc.hero_front_x,BoxSet.GAME_LINE)
|
||||||
|
}
|
||||||
|
switch(SkillSet[sk].type){
|
||||||
|
case SkType.leastHealth: //血量最少单体
|
||||||
|
|
||||||
|
break;
|
||||||
|
case SkType.highestHealth: //血量最多单体
|
||||||
|
|
||||||
|
break;
|
||||||
|
case SkType.backRow: //最后排
|
||||||
|
t_pos=v3(smc.mon_back_x,BoxSet.GAME_LINE)
|
||||||
|
if(this.box_group==BoxSet.MONSTER){
|
||||||
|
t_pos=v3(smc.hero_back_x,BoxSet.GAME_LINE)
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
let pos =this.skill_pos()
|
let pos =this.skill_pos()
|
||||||
pos.y=this.node.position.y + y
|
pos.y=this.node.position.y + y
|
||||||
pos.x=this.node.position.x + x
|
pos.x=this.node.position.x + x
|
||||||
let is_crit=this.check_crit()
|
let is_crit=this.check_crit()
|
||||||
skill.load(pos,this.box_group,this.node,sk,this.ap_max,t_pos,is_crit,this.crit_add);
|
skill.load(pos,this.box_group,this.node,sk,this.ap_max,t_pos,is_crit,this.crit_add);
|
||||||
this.to_console(this.scale+this.hero_name+"使用技能:"+sk+" t_pos:"+t_pos+" box:"+this.box_group,);
|
this.to_console(this.scale+this.hero_name+"使用技能:"+sk+SkillSet[sk].name+" t_pos:"+t_pos+" box:"+this.box_group,);
|
||||||
}
|
}
|
||||||
do_add_buff(hero:any,sk:number){
|
do_add_buff(hero:any,sk:number){
|
||||||
let skill = ecs.getEntity<Skill>(Skill);
|
let skill = ecs.getEntity<Skill>(Skill);
|
||||||
@@ -620,7 +706,7 @@ export class HeroViewComp extends CCComp {
|
|||||||
this.to_console("do_add_buff:"+hero.hero_name+" "+sk);
|
this.to_console("do_add_buff:"+hero.hero_name+" "+sk);
|
||||||
let is_crit=this.check_crit()
|
let is_crit=this.check_crit()
|
||||||
skill.load(pos,this.box_group,this.node,sk,this.ap_max,t_pos,is_crit,this.crit_add);
|
skill.load(pos,this.box_group,this.node,sk,this.ap_max,t_pos,is_crit,this.crit_add);
|
||||||
this.to_console(this.scale+this.hero_name+"使用buff:"+sk+" t_pos:"+t_pos+" box:"+this.box_group,);
|
this.to_console(this.scale+this.hero_name+"使用buff:"+sk+SkillSet[sk].name+" t_pos:"+t_pos+" box:"+this.box_group,);
|
||||||
}
|
}
|
||||||
|
|
||||||
exp_add(exp:number=0){
|
exp_add(exp:number=0){
|
||||||
@@ -720,8 +806,8 @@ export class HeroViewComp extends CCComp {
|
|||||||
this.node.setPosition(pos)
|
this.node.setPosition(pos)
|
||||||
}
|
}
|
||||||
|
|
||||||
to_console(value:any){
|
to_console(value:any,value2:any=null,value3:any=null){
|
||||||
console.log("["+this.scale+this.hero_name+']'+value)
|
console.log("["+this.scale+this.hero_name+']'+value,value2,value3)
|
||||||
}
|
}
|
||||||
reset() {
|
reset() {
|
||||||
this.is_dead = false;
|
this.is_dead = false;
|
||||||
|
|||||||
@@ -234,20 +234,42 @@ export class MissionComp extends CCComp {
|
|||||||
return ecs.query(ecs.allOf(HeroModelComp))
|
return ecs.query(ecs.allOf(HeroModelComp))
|
||||||
}
|
}
|
||||||
count_mon_pos(){
|
count_mon_pos(){
|
||||||
|
let right_x:number=360
|
||||||
|
let left_x:number=-360
|
||||||
let monsters:any= this.get_mons()
|
let monsters:any= this.get_mons()
|
||||||
for(let i=0;i<monsters.length;i++){
|
for(let i=0;i<monsters.length;i++){
|
||||||
if(monsters[i].HeroView == undefined) return
|
if(monsters[i].HeroView == undefined) return
|
||||||
let mon:any = monsters[i].HeroView.node.position
|
let mon:any = monsters[i].HeroView.node.position
|
||||||
smc.enemy_pos[i]= mon
|
smc.enemy_pos[i]= mon
|
||||||
|
if(monsters[i].HeroView.node.position.x > left_x){
|
||||||
|
left_x = monsters[i].HeroView.node.position.x
|
||||||
|
}
|
||||||
|
if(monsters[i].HeroView.node.position.x < right_x){
|
||||||
|
right_x = monsters[i].HeroView.node.position.x
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
smc.mon_front_x=right_x
|
||||||
|
smc.mon_back_x=left_x
|
||||||
|
// console.log("count_mon_pos",smc.mon_pos,smc.mon_front_x,smc.mon_back_x)
|
||||||
}
|
}
|
||||||
count_hero_pos(){
|
count_hero_pos(){
|
||||||
|
let right_x:number=360
|
||||||
|
let left_x:number=-360
|
||||||
let heros:any= this.get_heros()
|
let heros:any= this.get_heros()
|
||||||
for(let i=0;i<heros.length;i++){
|
for(let i=0;i<heros.length;i++){
|
||||||
if(heros[i].HeroView == undefined) return
|
if(heros[i].HeroView == undefined) return
|
||||||
let ho:any = heros[i].HeroView.node.position
|
let ho:any = heros[i].HeroView.node.position
|
||||||
smc.hero_pos[i]= ho
|
smc.hero_pos[i]= ho
|
||||||
|
if(heros[i].HeroView.node.position.x > left_x){
|
||||||
|
left_x = heros[i].HeroView.node.position.x
|
||||||
|
}
|
||||||
|
if(heros[i].HeroView.node.position.x < right_x){
|
||||||
|
right_x = heros[i].HeroView.node.position.x
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
smc.hero_front_x=left_x
|
||||||
|
smc.hero_back_x=right_x
|
||||||
|
// console.log("count_hero_pos",smc.hero_pos,smc.hero_front_x,smc.mon_front_x)
|
||||||
}
|
}
|
||||||
|
|
||||||
mon_refresh(){
|
mon_refresh(){
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ export class Skill extends ecs.Entity {
|
|||||||
sv.debuff = SkillSet[uuid].debuff;
|
sv.debuff = SkillSet[uuid].debuff;
|
||||||
sv.depb = SkillSet[uuid].depb;
|
sv.depb = SkillSet[uuid].depb;
|
||||||
sv.derate = SkillSet[uuid].derate;
|
sv.derate = SkillSet[uuid].derate;
|
||||||
|
sv.run = SkillSet[uuid].run;
|
||||||
sv.is_crit=is_crit
|
sv.is_crit=is_crit
|
||||||
sv.crit_add=crit_add
|
sv.crit_add=crit_add
|
||||||
// node.setScale(v3(node.scale.x*scale,node.scale.y))
|
// node.setScale(v3(node.scale.x*scale,node.scale.y))
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ export class SkillCom extends CCComp {
|
|||||||
box_group:number = 0;
|
box_group:number = 0;
|
||||||
box_tag:number=0;
|
box_tag:number=0;
|
||||||
type:number = 1;
|
type:number = 1;
|
||||||
|
run:number = 0;
|
||||||
tg:number = 3;
|
tg:number = 3;
|
||||||
in_time:number = 0.3; // 不动技能持续时间
|
in_time:number = 0.3; // 不动技能持续时间
|
||||||
enemys:any = [];
|
enemys:any = [];
|
||||||
@@ -65,13 +66,9 @@ export class SkillCom extends CCComp {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
if(this.type==1 ){
|
if(this.run==1 ){
|
||||||
this.is_destroy=true
|
this.is_destroy=true
|
||||||
}
|
}
|
||||||
// console.log("skill onBeginContact",seCol.group,otCol.group)
|
|
||||||
// if(this.type==1 ){
|
|
||||||
// this.is_destroy=true
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
if(otCol.group == seCol.group&&otCol.tag ==0&&this.tg==2){
|
if(otCol.group == seCol.group&&otCol.tag ==0&&this.tg==2){
|
||||||
this.to_console("skill onBeginContact 是对自己人的buff",seCol,otCol)
|
this.to_console("skill onBeginContact 是对自己人的buff",seCol,otCol)
|
||||||
|
|||||||
@@ -1,60 +0,0 @@
|
|||||||
import { _decorator, Component, Node, tween ,Vec3,v3,Collider2D,Contact2DType} from 'cc';
|
|
||||||
import { BoxSet } from '../common/config/BoxSet';
|
|
||||||
import { Timer } from 'db://oops-framework/core/common/timer/Timer';
|
|
||||||
const { ccclass, property } = _decorator;
|
|
||||||
|
|
||||||
@ccclass('baseCom')
|
|
||||||
export class baseCom extends Component {
|
|
||||||
s_uuid:number = 0;
|
|
||||||
speed:number = 200;
|
|
||||||
y_speed:number = 0;
|
|
||||||
x_speed:number = 0;
|
|
||||||
dis:number = 80;
|
|
||||||
scale:number = 1;
|
|
||||||
ap:number = 10;
|
|
||||||
atk_count:number = 0;
|
|
||||||
is_crit:boolean = false;
|
|
||||||
crit_add: number = 0;//暴击伤害加成
|
|
||||||
angle:number = 0;
|
|
||||||
t_pos:Vec3 = v3(0,0,0); // 目标增量
|
|
||||||
is_destroy:boolean = false;
|
|
||||||
box_group:number = 0;
|
|
||||||
box_tag:number=0;
|
|
||||||
type:number = 1;
|
|
||||||
time:Timer = new Timer(0.01);
|
|
||||||
run_type:number = 0; // 0有目标 带方向,1贝塞尔曲线 2 不动 ,3 直线
|
|
||||||
in_time:number = 0.3; // 不动技能持续时间
|
|
||||||
start() {
|
|
||||||
console.log("baseCom start")
|
|
||||||
let collider = this.getComponent(Collider2D);
|
|
||||||
collider.group = this.box_group;
|
|
||||||
collider.tag = this.box_tag;
|
|
||||||
collider.sensor = true;
|
|
||||||
if (collider) {
|
|
||||||
collider.on(Contact2DType.BEGIN_CONTACT, this.onBeginContact, this);
|
|
||||||
// collider.on(Contact2DType.END_CONTACT, this.onEndContact, this);
|
|
||||||
collider.on(Contact2DType.POST_SOLVE, this.onPostSolve, this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
onBeginContact (selfCollider: Collider2D, otherCollider: Collider2D) {
|
|
||||||
if(otherCollider.group != selfCollider.group&&otherCollider.tag ==0){
|
|
||||||
this.atk_count+=1
|
|
||||||
// console.log("skill onBeginContact",selfCollider.group,otherCollider.group)
|
|
||||||
if(this.type==1 ){
|
|
||||||
this.is_destroy=true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
onPostSolve (selfCollider: Collider2D, otherCollider: Collider2D) {
|
|
||||||
|
|
||||||
}
|
|
||||||
reset() {
|
|
||||||
this.node.destroy();
|
|
||||||
}
|
|
||||||
|
|
||||||
update(deltaTime: number) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
"ver": "4.0.23",
|
|
||||||
"importer": "typescript",
|
|
||||||
"imported": true,
|
|
||||||
"uuid": "89c1ceaf-2ca4-4954-88e7-542fae21fa14",
|
|
||||||
"files": [],
|
|
||||||
"subMetas": {},
|
|
||||||
"userData": {}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user