设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3956|回复: 6
打印 上一主题 下一主题

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
39 小时
注册时间
2015-11-17
帖子
46
跳转到指定楼层
1
发表于 2015-12-27 22:41:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
想设置一些怪物会追踪主角,但当有障碍物挡住,而且与主角站位平行时,事件就停止行走,不会绕开障碍物继续追踪,很不智能,这个有插件可以解决吗?

Lv1.梦旅人

梦石
0
星屑
55
在线时间
388 小时
注册时间
2009-8-4
帖子
219
2
发表于 2015-12-27 23:56:58 | 只看该作者
试试自带的RPGmakerWeb_plugins\Shaz的SmartPath,我感觉比默认靠近寻路(不,我觉得那不算是寻路)聪明点,似乎是直接用了鼠标操作那套寻路。如果有障碍但是实际最短路径在10步左右的话还是会继续追踪。当然最短路径太长了也是搞不定的。
你需要用一个地图上的并行事件call插件指令来控制地图上每个敌人追踪主角。
另外用这个方法敌人是没有所谓视野范围的,全地图的敌人都会一起追踪,所以你可能需要自己加点条件判定来达到比较好的效果。

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

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

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

使用道具 举报

Lv1.梦旅人

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

使用道具 举报

Lv1.梦旅人

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

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

使用道具 举报

Lv1.梦旅人

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


JAVASCRIPT 代码复制下载
  1. Game_Event.prototype.updateChaseMovement = function() {
  2.         if (this._stopCount > 0 && this._chasePlayer) {
  3.                 this.setTarget($gamePlayer);
  4.         } else if (this._stopCount > 0 && this._fleePlayer) {
  5.                 this.moveAwayFromPlayer();
  6.         } else {
  7.                 this.clearTarget();
  8.                 Yanfly.ECP.Game_Event_updateSelfMovement.call(this);
  9.         }
  10. };


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

使用道具 举报

Lv1.梦旅人

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

好的,我研究一下,谢谢了
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-15 19:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表