| 
 | 
 
 
发表于 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)的技能 
} |   
 
 
 
 |