请选择 进入手机版 | 继续访问电脑版

站内搜索

搜索
热搜: 活动 交友 discuz

iFAction 世界需要你的想象力!

[请帮忙] 如何让角色在范围内追向敌人

3

主题

3

帖子

30

积分

iF元素粒

Rank: 2

积分
30
发表于 2020-11-8 09:55:32 | 显示全部楼层 |阅读模式
譬如设置一个冲刺攻击
当范围内没有敌人,不论空中还是地上,都是直线横向往 角色朝向方向 冲刺一段距离
当范围内有敌人,不论空中还是地上,使用冲刺攻击的话会冲向  角色朝向方向 的 最近的敌人 。

3

主题

59

帖子

1898

积分

iF城镇

Rank: 6Rank: 6

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

0

主题

2

帖子

18

积分

iF元素粒

Rank: 2

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

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

3

主题

59

帖子

1898

积分

iF城镇

Rank: 6Rank: 6

积分
1898
发表于 2021-3-7 00:29:28 | 显示全部楼层
alanst 发表于 2021-3-7 00:11
是否能以自动瞄准做一个自动战斗了

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

0

主题

2

帖子

18

积分

iF元素粒

Rank: 2

积分
18
发表于 2021-3-8 10:44:37 | 显示全部楼层
1084736768 发表于 2021-3-7 00:29
让这个代码循环起来,再把最后一行改成 普通攻击就是自动战斗了,如果你会制作自动瞄准 那就是更好了 ...

这是高手。
我一直想做个放置类游戏,这下有机会了。
不过我想做的放置是指派NPC去后台场景里自动战斗。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系我们
QQ群:977585123
iFAction下载
Windows客户端
反馈
意见建议
iFAction

iFAction

京ICP备15053274号-1

Powered by Discuz! X3.4 © 2001-2013 Comsenz Inc.