power182009 发表于 2020-11-8 09:55:32

如何让角色在范围内追向敌人

譬如设置一个冲刺攻击
当范围内没有敌人,不论空中还是地上,都是直线横向往 角色朝向方向 冲刺一段距离
当范围内有敌人,不论空中还是地上,使用冲刺攻击的话会冲向角色朝向方向 的 最近的敌人 。
{:4_101:}

1084736768 发表于 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().visible==true && !RV.NowMap.getEnemys().isDie){ //判断敌人是否存活且敌人是否显示
                var xx=Math.abs(RV.NowMap.getActor().getCharacter().x-RV.NowMap.getEnemys().getCharacter().x)//计算人物到敌人之间的X坐标差
                var yy=Math.abs(RV.NowMap.getActor().getCharacter().y-RV.NowMap.getEnemys().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().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)的技能
}

alanst 发表于 2021-3-7 00:11:43

1084736768 发表于 2020-11-9 18:43
想要知道敌人是否在人物一定的范围内,就要先获得全部敌人数量,再判断人物和敌人之间的距离,最后判断敌人 ...

是否能以自动瞄准做一个自动战斗了

1084736768 发表于 2021-3-7 00:29:28

alanst 发表于 2021-3-7 00:11
是否能以自动瞄准做一个自动战斗了

让这个代码循环起来,再把最后一行改成 普通攻击就是自动战斗了,如果你会制作自动瞄准 那就是更好了

alanst 发表于 2021-3-8 10:44:37

1084736768 发表于 2021-3-7 00:29
让这个代码循环起来,再把最后一行改成 普通攻击就是自动战斗了,如果你会制作自动瞄准 那就是更好了 ...

这是高手。
我一直想做个放置类游戏,这下有机会了。
不过我想做的放置是指派NPC去后台场景里自动战斗。
页: [1]
查看完整版本: 如何让角色在范围内追向敌人