|
发表于 2020-11-9 18:43:16
|
显示全部楼层
想要知道敌人是否在人物一定的范围内,就要先获得全部敌人数量,再判断人物和敌人之间的距离,最后判断敌人在人物的方位。
下面写了一段脚本,你可以参考下,脚本直接放在触发器里,触发器触发条件设定为【按下或按住某个按键触发】
x和y值改为你需要设定人物判断的范围,施放技能ID改为你需要设定的技能ID。
----------------分割线--------------------
var id=-1//默认敌人ID
var x=5//设定判断在人物范围内敌人的X坐标
var y=5//设定判断在人物范围内敌人的y坐标
var distance=Math.sqrt(Math.pow(x*48,2)+Math.pow(y*48,2)) //人物和敌人之间距离
for(var i = 0;i < RV.NowMap.getEnemys().length;i++){//获取当前场景全部敌人
if(RV.NowMap.getEnemys()[i].visible==true && !RV.NowMap.getEnemys()[i].isDie){ //判断敌人是否存活且敌人是否显示
var xx=Math.abs(RV.NowMap.getActor().getCharacter().x-RV.NowMap.getEnemys()[i].getCharacter().x)//计算人物到敌人之间的X坐标差
var yy=Math.abs(RV.NowMap.getActor().getCharacter().y-RV.NowMap.getEnemys()[i].getCharacter().y)//计算人物到敌人之间的y坐标差
if(xx<=x*48 && yy<=y*48){//判断敌人是否在设定人物范围内
if(Math.sqrt(Math.pow(xx,2)+Math.pow(yy,2))<=distance){//根据直角三角形原理判断斜边长度,长度越小就符合最近的敌人设定
distance=Math.sqrt(Math.pow(xx,2)+Math.pow(yy,2))//得到最近敌人的距离
id=i//得到最近敌人的位置(排序位置)
}
}
}
}
if(id>-1){//判断是否获取到敌人排序位置
if(RV.NowMap.getEnemys()[id].getCharacter().x<RV.NowMap.getActor().getCharacter().x){//判断敌人是否在人物左边
RV.NowMap.getActor().getCharacter().setLeftRight(true)//人物朝向改变为左边
}else{
RV.NowMap.getActor().getCharacter().setLeftRight(false)//人物朝向改变为右边
}
RV.NowCanvas.playSkill(RV.NowMap.getActor(),1,RV.GameData.actor)//符合敌人在人物范围内,同时施放1号(ID)的技能
} |
|