Project1

标题: 求助,如何让主角在怪物一定范围内怪物才开始追击 [打印本页]

作者: www1164472087    时间: 2024-11-28 10:07
标题: 求助,如何让主角在怪物一定范围内怪物才开始追击
求助,让怪物随机移动或者不移动,玩家走到怪物的一定范围内怪物才开始快速追逐,是需要脚本还是单纯事件可以解决
作者: lvzi12345    时间: 2024-11-29 12:00
这几天我也在思考这个问题,个人认为这个是脚本和事件结合使用,我还没写代码所以只是思考,人物放在地图上如果我没有理解错,应该是以单独事件存在的,所以我有这样的想法,根据编辑器内部设定
class RPG::Event
  def initialize(x, y)
    @id = 0
    @name = ''
    @x = x
    @y = y
    @pages = [RPG::Event::Page.new]#注意这里
  end
  attr_accessor :id
  attr_accessor :name
  attr_accessor :x
  attr_accessor :y
  attr_accessor :pages
end

RPG::Event::Page下面有2个你用得着的属性  1、move_type 移动类型(0:固定、1:随机、2:接近、3:自定义)。
2、move_speed 移动速度(1:1/8 倍速、2:1/4 倍速、3:1/2 倍速、4:正常、5:2 倍速、6:4 倍速)。

既然地图上说话的人物是事件 那么……:# 对话事件号是 n 号
event = $gameMap.events[n]
x = event.x # 获取事件的 X 坐标
y = event.y # 获取事件的 Y 坐标
那么我认为我可以通过 事件event的坐标设定一个区域  玩家走进去后, 立刻把事件的move_type改为2(接近) 离开范围后把这个改为1(随机)
作者: lvzi12345    时间: 2024-11-30 00:50
测试成果 具体做法 1、事件 2、并行处理  3、脚本
event = $game_map.events[1]
x=event.distance_x_from($game_player.x)
y=event.distance_y_from($game_player.y)
if x.abs<4&&y.abs<4
event.move_toward_character($game_player)
end

靠近.jpg (166.5 KB, 下载次数: 1)

靠近.jpg

作者: lvzi12345    时间: 2024-11-30 13:50
当然你也可以在自己写脚本完成这个动作
在Game_Event里 把下面代码加在update上面
def mypage
  x=distance_x_from($game_player.x)
  y=distance_y_from($game_player.y)
  if x.abs<4&&y.abs<4
    @move_type=2#接近你
    @move_speed=5#2倍速度接近你
  else
    @move_type=1#随机
    @move_speed=4#正常速度随机移动
  end
end
在事件编辑事件里面录入以下脚本
event = $game_map.events[1]
event.mypage
老规矩触发条件是:并行处理

mypage1.png (38.98 KB, 下载次数: 0)

脚本编译

脚本编译

mypage2.png (26.66 KB, 下载次数: 0)

事件编辑设定

事件编辑设定

作者: www1164472087    时间: 2024-11-30 21:45
lvzi12345 发表于 2024-11-29 12:00
这几天我也在思考这个问题,个人认为这个是脚本和事件结合使用,我还没写代码所以只是思考,人物放在地图上 ...

噢噢噢!感谢感谢!
作者: lvzi12345    时间: 2024-11-30 22:26
本帖最后由 lvzi12345 于 2024-11-30 22:31 编辑
www1164472087 发表于 2024-11-30 21:45
噢噢噢!感谢感谢!


下面两个方式 都可以实现你要的效果 看你更喜欢哪种方式 第一种方式 直接使用move_toward_character(character)方法,这样操作敌人一旦黏上你 就很难摆脱 第二种方式通过对page的操作,敌人是慢慢走过来 看你更喜欢那种方式 以及作品的需求
作者: 彩虹下的艾尔    时间: 2024-12-13 00:41
lvzi12345 发表于 2024-11-30 22:26
下面两个方式 都可以实现你要的效果 看你更喜欢哪种方式 第一种方式 直接使用move_toward_character(cha ...

欸?我实际用过之后怎么没有任何反应,我是按照你的要求放在update上面了,是我还漏了哪里吗
作者: lvzi12345    时间: 2024-12-13 10:48
本帖最后由 lvzi12345 于 2024-12-13 20:39 编辑
彩虹下的艾尔 发表于 2024-12-13 00:41
欸?我实际用过之后怎么没有任何反应,我是按照你的要求放在update上面了,是我还漏了哪里吗 ...


您在事件里面添加了信息吗, 你靠近NPC4格内 npc就过来了    如果不行,可能是频率问题没有达到你的预期,你把频率调高你试试 看看npc是不是一直跟着你
作者: 彩虹下的艾尔    时间: 2024-12-13 21:46
lvzi12345 发表于 2024-12-13 10:48
您在事件里面添加了信息吗, 你靠近NPC4格内 npc就过来了    如果不行,可能是频率问题没有达到你的预期 ...

您好,我是按照你的说法两种方法都尝试了,但是没有效果,我看了下脚本,是不是需要在脚本当中设置频率?
而且我还有一个问题就是,如果调成并行处理,我的期望是怪物接触到玩家后触发战斗,但是实际情况是我一进入该地图就立即触发战斗了

7f4bccdb84503cbb903c19db5255ee8a.png (43.75 KB, 下载次数: 0)

7f4bccdb84503cbb903c19db5255ee8a.png

作者: lvzi12345    时间: 2024-12-13 23:16
本帖最后由 lvzi12345 于 2024-12-13 23:51 编辑

https://rpg.blue/forum.php?mod=attachment&aid=NDA5NDIyfDE5MDk1NmQ3YjI0YmU1OWVmMTJiOTljNGM2OTIzMzMxfDE3MzQ4NzQ3ODI%3D&request=yes&_f=.rar
彩虹下的艾尔 发表于 2024-12-13 21:46
您好,我是按照你的说法两种方法都尝试了,但是没有效果,我看了下脚本,是不是需要在脚本当中设置频率? ...


我做了一个打包  你可以看看 我测试了达到了我的效果  蓝色头发的男生是第一方法 他会马上冲过来    女生是第二个方法   她会利用系统自带靠近功功能过来 我这里把她视野开的很大频率拉满(@move_frequency=5 )   您试试   当他们在你面前后要做什么就需要您自己去思考如何实现了

遇见敌人.rar

1.41 MB, 下载次数: 1


作者: 彩虹下的艾尔    时间: 2024-12-14 00:01
lvzi12345 发表于 2024-12-13 23:16
https://rpg.blue/forum.php?mod=attachment&aid=NDA5NDIyfDE5MDk1NmQ3YjI0YmU1OWVmMTJiOTljNGM2OTIzMzMxfDE3MzQ4NzQ3ODI%3D&request=yes&_f=.rar

我做了一个打包  你可以看看 我测试了达到了我的效果  蓝色头发的男生是第一方法 他 ...

好的,谢谢您,我研究一下我是哪里出问题了
作者: 彩虹下的艾尔    时间: 2024-12-14 01:10
lvzi12345 发表于 2024-12-13 23:16
https://rpg.blue/forum.php?mod=attachment&aid=NDA5NDIyfDE5MDk1NmQ3YjI0YmU1OWVmMTJiOTljNGM2OTIzMzMxfDE3MzQ4NzQ3ODI%3D&request=yes&_f=.rar

我做了一个打包  你可以看看 我测试了达到了我的效果  蓝色头发的男生是第一方法 他 ...

啊我知道了
event = $game_map.events[1]
event.mypage
这个events【1】是事件的id,我原封不动的抄过来所以没效果,我把括号里的数字改为和当前事件id一样就可以了,谢谢您!被自己蠢到了
作者: lvzi12345    时间: 2024-12-14 08:56
彩虹下的艾尔 发表于 2024-12-14 01:10
啊我知道了
event = $game_map.events[1]
event.mypage






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