Project1

标题: 关于RPGmakerMV事件页的顺序及独立开关使用方面的问题 [打印本页]

作者: 菜狗子114514    时间: 2020-5-28 17:51
标题: 关于RPGmakerMV事件页的顺序及独立开关使用方面的问题
本人在学习RPGmakerMV的过程中,设立了一个敌人AI事件,目标是希望通过对与玩家的距离判断,进行不同的行动,
然而在实现过程中出现了标题中的两个问题。接下来我会详细说明,希望大佬们能够指出我逻辑中的纰漏或能为我指教更好的实现方式。
为了能够计算玩家与敌人事件的距离,我进行了如下算法:(变量编号省去了)


·变量操作: 玩家_位置X(变量)= 玩家 的 地图X
·变量操作: 玩家_位置Y(变量)= 玩家 的 地图Y
·变量操作: 敌人_位置X(变量)= 敌人 的 地图X
·变量操作: 敌人_位置Y(变量)= 敌人 的 地图Y
·变量操作:变量1  =  玩家_位置X(变量)
·变量操作:变量2  =  玩家_位置Y(变量)
·变量操作:变量1 -=  敌人_位置X(变量)
·变量操作:变量2 -=  敌人_位置Y(变量)
·变量操作:变量1 *= 变量1
·变量操作:变量2 *= 变量2
·变量操作:距离的平方(变量) = 变量1
·变量操作:距离的平方(变量) += 变量2

将这部分设为公共事件:计算距离平方。

==================================分割线==========================================

在设置的进行距离判定的事件,对距离的平方进行判定:

设置事件位置:本事件,({敌人_位置X},{敌人_位置Y})
·变量操作: 敌人_位置X(变量)= 敌人 的 地图X
·变量操作: 敌人_位置Y(变量)= 敌人 的 地图Y
·公共事件:计算距离平方
·如果: 距离的平方 《=9
   ·开关操作: 追逐= ON
:否则
   ·开关操作: 追逐= OFF
   ·
:结束

==================================分割线==========================================

而在敌人的事件页里,第一页则是设置了最基本的行进路线,出现条件为玩家,触发条件为并行处理。
并设置了这么一个逻辑

·如果 : 追逐  为  ON
   ·独立开关操作: A= ON
·
:结束
·
·如果 : 追逐  为  OFF
   ·独立开关操作: A= OFF
·
:结束
·

==================================分割线==========================================

第二页则是在出现条件为 独立开关 A, 触发条件为 事件接触,移动方式改为 接近玩家

在这样的事件页编辑下,实现了接近敌人后会追过来,但是也表现出了两个问题:
第一,在玩家远离后,敌人事件仍会持续的接近玩家,我的目的是希望能够在距离<=A的时候追上来,大于A了,就不追了,恢复原本的行动,哪怕是随机移动,都可以。
第二,则是之后我在设置距离大于A小于等于B的时候发现,事件会变成独立开关B发生时的事件。
因此我的问题是:在这样的需求下,我应该如何设置事件的逻辑,
其一是能保证玩家在相应的距离里能够触发敌人不同的开关事件页。
其二是在玩家接近敌人并离开相关的距离后,即,相对距离足够远而不会触发任何敌人事件的情况下,如何让敌人事件恢复原本的移动方式,或直接改为随机移动?
问题写的比较冗长,刚学习了不到一个月,中文说明文档的内容则太过微观,,没有js经验,有点难搞。。。希望社区大佬能够给予帮助或建议,
提前谢谢大家了

作者: moonyoulove    时间: 2020-5-28 18:35
感觉当敌人事件发现玩家后,事件还是要继续并行处理,然后用条件分支来模拟事件接触的条件,这样敌人追到玩家与敌人视野失去玩家两种情况就可以同时处理。
作者: 菜狗子114514    时间: 2020-5-28 18:37
moonyoulove 发表于 2020-5-28 18:35
感觉当敌人事件发现玩家后,事件还是要继续并行处理,然后用条件分支来模拟事件接触的条件,这样敌人追到玩 ...

可是我需要敌人在接触到玩家后出发游戏结束,,,这种情况下如果并行处理,是不是就会造成敌人在玩家身边反复横跳,,,
作者: 布伦希尔德    时间: 2020-5-28 18:59
建议楼主补上相关事件页的图,根据你的描述,独立开关A被正常关闭时,怪物事件只会执行第一页才对,而不是执行接近事件页,不知道你哪里出了问题。另外就是计算玩家与事件相对距离上好像写的有些问题,比如为什么变量1不直接获取玩家的地图X,而是中间用一个“玩家_位置X(变量)”来连起来?
作者: 菜狗子114514    时间: 2020-5-28 21:35
布伦希尔德 发表于 2020-5-28 18:59
建议楼主补上相关事件页的图,根据你的描述,独立开关A被正常关闭时,怪物事件只会执行第一页才对,而不是 ...

因为在美术方面需要以这个玩家X玩家Y来定位玩家位置。因此设置了这一变量。您说的我大概也听明白了,就是说其实没必要将玩家X这一变量作为中间的节点,直接通过
作者: 菜狗子114514    时间: 2020-5-28 21:36
菜狗子114514 发表于 2020-5-28 21:35
因为在美术方面需要以这个玩家X玩家Y来定位玩家位置。因此设置了这一变量。您说的我大概也听明白了,就是 ...

少写了一些:直接通过变量1=玩家X, 变量2=玩家Y来实现就好
但是我现在发现还是有一个问题
我在开一楼吧

作者: 菜狗子114514    时间: 2020-5-28 21:38
本帖最后由 菜狗子114514 于 2020-5-28 21:39 编辑

公共事件的判定

public.png (99.94 KB, 下载次数: 49)

公共事件

公共事件

作者: 菜狗子114514    时间: 2020-5-28 21:43
为了防止其他独立开关的判定出现问题我还是把独立开关情况手动在第一页的分支事件里面进行设置了
然而实际的实现情况就是只做最后一个,,,,,我就很头痛

enemy_logic.png (56.77 KB, 下载次数: 57)

enemy_logic.png

作者: 菜狗子114514    时间: 2020-5-28 21:45
剩下的几页在逻辑上其实是和这一页的条件和逻辑都差不多的,
在固定的开关的条件下,
对行为进行调整。
这里仅为补充

chasing.png (93.85 KB, 下载次数: 54)

chasing.png

作者: 开关关    时间: 2020-5-28 23:46
本帖最后由 开关关 于 2020-5-28 23:50 编辑

描述很详细,好评。事件同时只能执行一页的内容,因此写在第一页的下列部分没有机会被执行。

·如果 : 追逐  为  OFF
   ·独立开关操作: A= OFF
·
:结束
·

逻辑是这样的:

开关:追逐==OFF 的情况下,敌人事件重复执行第一页内容。每重复执行一次,便经历如下过程:开始执行;判断 开关:追逐==ON,发现不对,忽略包含的内容;然后判断 开关:追逐==OFF,发现正确,于是执行 独立开关操作: A=OFF。执行完毕。每次一套下来为本来就是OFF的独立开关:A赋值OFF,没有任何效果。

开关:追逐==ON 的情况下,敌人事件执行第一页内容:开始执行;判断 开关:追逐==ON,发现正确,执行 独立开关操作: A=ON;然后判断 开关:追逐==OFF,发现错误,于是忽略包含的内容。执行完毕。随后所有事件update,敌人事件发现第二页的条件满足了,于是它优先且仅表现第二页。第二页的触发条件是事件接触,因此不执行。

2楼说得对,敌人事件切换到第二页后仍然需要并行事件。但是并行事件不能写在执行内容里,因为第二页要写事件接触的执行内容。那应该怎么办呢?小编也不知道呢!这里提供两种思路。

第一种思路,既然只有一个追逐的NPC,那就可以在计算距离平方的公共事件里补充判断,如果足够远,则执行 开关操作:追逐=OFF 。然后将敌人事件第二页的出现条件改为 开关:追逐==ON ,就能由公共事件控制这个NPC了。

第二种思路,如果有很多追逐的NPC,不能用公共事件以偏概全,那么可以将判断 开关:追逐==OFF 写在自主移动里面,若 开关:追逐==OFF 则独立开关A=false,否则接近玩家。自主移动的自定义就相当于一个并行处理的事件,里面的“脚本”可以做到这个效果。具体写法看具体情况,这里就不乱举例了。

看到你的图片,应该只有一个追逐的NPC吧。那用第一种思路就可以了。
作者: 布伦希尔德    时间: 2020-5-29 08:00
10楼解说得很详细了,简单地说就是按楼主的写法,追逐事件被激活之后,根本  没  机  会  执行第一页的内容(因为事件优先执行满足条件的、页码较大的一页),来判断是否超出追逐范围然后将独立开关A关闭。
作者: 菜狗子114514    时间: 2020-5-29 13:23
开关关 发表于 2020-5-28 23:46
描述很详细,好评。事件同时只能执行一页的内容,因此写在第一页的下列部分没有机会被执行。

·如果 : 追 ...

感谢!!!!学到了!这就去和rpgmaker对线!
作者: 菜狗子114514    时间: 2020-5-29 13:24
布伦希尔德 发表于 2020-5-29 08:00
10楼解说得很详细了,简单地说就是按楼主的写法,追逐事件被激活之后,根本  没  机  会  执行第一页的内容 ...

学到了!!!同样感谢!!!!




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1