查看: 4631|回复: 6

[已经解决] 请教一个事件靠近主角的问题

[复制链接]
梦石
0
星屑
50
在线时间
39 小时
注册时间
2015-11-17
回帖
33
发表于 2015-12-27 22:41:32 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
想设置一些怪物会追踪主角,但当有障碍物挡住,而且与主角站位平行时,事件就停止行走,不会绕开障碍物继续追踪,很不智能,这个有插件可以解决吗?
梦石
0
星屑
55
在线时间
388 小时
注册时间
2009-8-4
回帖
212
发表于 2015-12-27 23:56:58 | 显示全部楼层
试试自带的RPGmakerWeb_plugins\Shaz的SmartPath,我感觉比默认靠近寻路(不,我觉得那不算是寻路)聪明点,似乎是直接用了鼠标操作那套寻路。如果有障碍但是实际最短路径在10步左右的话还是会继续追踪。当然最短路径太长了也是搞不定的。
你需要用一个地图上的并行事件call插件指令来控制地图上每个敌人追踪主角。
另外用这个方法敌人是没有所谓视野范围的,全地图的敌人都会一起追踪,所以你可能需要自己加点条件判定来达到比较好的效果。

评分

参与人数 1梦石 +1 收起 理由
余烬之中 + 1 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
50
在线时间
39 小时
注册时间
2015-11-17
回帖
33
 楼主| 发表于 2015-12-28 00:36:23 | 显示全部楼层
andrewx 发表于 2015-12-27 23:56
试试自带的RPGmakerWeb_plugins\Shaz的SmartPath,我感觉比默认靠近寻路(不,我觉得那不算是寻路)聪明点 ...

觉得还不错,谢谢你的帮助,不过我对这个视野还没有什么头绪?
回复

使用道具 举报

梦石
0
星屑
55
在线时间
388 小时
注册时间
2009-8-4
回帖
212
发表于 2015-12-28 00:51:53 | 显示全部楼层
一般来说设定为主角离怪物一定距离,或者能被怪物视野范围看到后,怪物才会追踪角色。我上面这个方法所有怪物从一开始就会往主角处逼近,导致跑地图前期敌人全聚过来。
比较好的办法是做个条件判定,如果主角和某个怪物距离小于某个值,才开启那个怪物的追踪插件指令。但是好像rm本身条件判断没有距离这个条件?(好像连坐标都得变量代?不太清楚,没仔细弄过),所以可能要麻烦一点。不过思路就这样
Yanfly的YEP_EventChasePlayer做了比较完善的怪物视野追踪还有放弃追踪的判定,但是寻路的方法还是默认的靠近,你可以去看看效果
回复

使用道具 举报

梦石
0
星屑
50
在线时间
39 小时
注册时间
2015-11-17
回帖
33
 楼主| 发表于 2015-12-28 01:03:41 | 显示全部楼层
andrewx 发表于 2015-12-28 00:51
一般来说设定为主角离怪物一定距离,或者能被怪物视野范围看到后,怪物才会追踪角色。我上面这个方法所有怪 ...

谢谢,用简单的变量加条件分歧是可以做到的
回复

使用道具 举报

梦石
0
星屑
55
在线时间
388 小时
注册时间
2009-8-4
回帖
212
发表于 2015-12-28 01:18:47 | 显示全部楼层
想了想那样做太麻烦了,我看了眼Yanfly的那个插件发现还是很容易加上shaz那个寻路的。
你先启用YEP_EventChasePlayer.js和shaz的SmartPath.js,并把下面的代码保存到一个新js文件里放在以上两个插件【下面】启用。
之后不用按照shaz那个设定插件指令了,只要按照Yanfly那个在移动路线里设置一下所需的属性(_chaseRange,_chaseSpeed之类的),就可以同时实现视野判定和智能寻路了。


[pre lang="javascript" line="1" file="SmartEventChasePlayer.js"]Game_Event.prototype.updateChaseMovement = function() {
        if (this._stopCount > 0 && this._chasePlayer) {
                this.setTarget($gamePlayer);
        } else if (this._stopCount > 0 && this._fleePlayer) {
                this.moveAwayFromPlayer();
        } else {
                this.clearTarget();
                Yanfly.ECP.Game_Event_updateSelfMovement.call(this);
        }
};[/pre]

临时改的,不知道会不会出什么奇怪的现象,你先试试
回复

使用道具 举报

梦石
0
星屑
50
在线时间
39 小时
注册时间
2015-11-17
回帖
33
 楼主| 发表于 2015-12-28 01:23:40 | 显示全部楼层
andrewx 发表于 2015-12-28 01:18
想了想那样做太麻烦了,我看了眼Yanfly的那个插件发现还是很容易加上shaz那个寻路的。
你先启用YEP_EventCh ...

好的,我研究一下,谢谢了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部