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

Project1

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

[已经解决] 请问可以设定事件移动到指定的坐标吗?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1290
在线时间
52 小时
注册时间
2017-2-2
帖子
36
跳转到指定楼层
1
发表于 2020-5-14 00:14:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
RT,当某个事件需要在几个不同的位置之间由玩家选择移动时,虽然也可以固定好移动的路线,但是地图上可以移动的位置变多后需要设置的路径就会相当多,非常繁杂的感觉
因此,就想知道移动的时候,可否以指定的坐标为终点,自动寻路移动过去之类的,如果能直线移动最好,或者左上右上这样斜方向移动也不错
————————
或者来让玩家接近事件、以及事件接近事件之类的方式?

如果可以当然还是希望直线移动而不是沿着格子走的,要是是显示图片,移动一下倒也就好了……可惜还是事件,不过感觉这样应该就需要脚本了

Lv5.捕梦者

梦石
10
星屑
39587
在线时间
1920 小时
注册时间
2010-11-14
帖子
3320

R考场第七期纪念奖

2
发表于 2020-5-14 00:55:14 | 只看该作者
本帖最后由 KB.Driver 于 2020-5-14 00:58 编辑

以前写的一个东西,也许能满足需要,不过应该不是最优化的代码。

移动路线中写脚本chase("xxx")
则会去追最近的注释写有xxx的事件

可以在你想让事件跑去的点上弄个透明事件,注释里加个关键词,
然后让人物执行移动路线chase("xxx")

注意每次chase只会走一步,因此需要循环。
如果走到了位置,你可以用分歧判断结束chase的循环。




RUBY 代码复制
  1. #==================================================================
  2. #  追逐事件 by Calendar99
  3. #
  4. #    追逐者设置移动路线--脚本--chase("string"),循环执行。
  5. #    之后追逐者会追逐地图上最近的注释有string的事件。
  6. #    可以在脚本中加入分歧判断,让事件在不追逐的时候执行其他行动。
  7. #
  8. #==================================================================
  9. class Game_Character
  10.  
  11.   def chase(string)
  12.     return false unless (event = get_chasing_event(string))
  13.     move_toward_character(event)
  14.     true
  15.   end
  16.  
  17.   def distance_to(character)
  18.     distance_x = (self.x - character.x).abs
  19.     distance_y = (self.y - character.y).abs
  20.     return distance_x + distance_y
  21.   end
  22.  
  23.   def get_chasing_events(string)
  24.     $game_map.events.select{|id, event| event.match(string) }
  25.   end
  26.  
  27.   def get_chasing_event(string)
  28.     return unless (event_hash = get_chasing_events(string))
  29.     event_array = []
  30.     event_hash.each_value{|event| event_array << event}
  31.     event_array.sort{|a, b| self.distance_to(a) <=> self.distance_to(b) }.first
  32.   end
  33.  
  34. end
  35.  
  36. class Game_Event
  37.  
  38.   def match(string)
  39.     @list.each do |command|
  40.       next unless command.code == 108 #注释
  41.       return true if command.parameters[0].index(string)
  42.     end
  43.     false
  44.   end
  45.  
  46. end

点评

啊!!太久没上P1了,抱歉今天才看到!!这个真的很棒,超感谢55555!  发表于 2020-9-21 00:15

评分

参与人数 1星屑 +100 收起 理由
VIPArcher + 100 认可答案

查看全部评分

用头画头像,用脚写脚本
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 06:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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