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

Project1

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

[已经解决] 如何设置敌人迅速靠近?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
314 小时
注册时间
2013-2-4
帖子
81
跳转到指定楼层
1
发表于 2014-12-10 21:36:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
如何设置,当玩家行走到地图中的怪物附近时,怪物会突然加速冲向玩家,而普通情况的怪物则依旧是‘随机移动’。(默认设置的那种‘接近’无论玩家多远,都是执行‘接近’而不是‘随机移动’)。
谜梦个人工作室:群号  397549060

Lv3.寻梦者

闇吼者の災悪眷族
不気味存在締造者

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
帖子
6491
2
发表于 2014-12-10 21:38:27 | 只看该作者
这个做起来有些复杂。
你可以选择另建一个并行事件,来控制这些怪物的移动或者独立开关。

判断怪物事件和玩家的坐标距离,如果符合则打开怪物的独立开关,让怪物快速接近玩家。

不过这样的并行事件比较吃运行效率,要谨慎使用。
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22461
在线时间
8598 小时
注册时间
2011-12-31
帖子
3364
3
发表于 2014-12-10 21:45:59 | 只看该作者
本帖最后由 tseyik 于 2014-12-12 14:56 编辑

@zdqhzs
経路探索VXAce
http://rpg.blue/forum.php?mod=viewthread&tid=336594
和下面四楼的併用就可以
https://rpg.blue/thread-369039-1-1.html
平時乱行,玩家進入6歩時加速追玩家


示範
Project29.rar (323.46 KB, 下载次数: 73)

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

梦石
0
星屑
2315
在线时间
5539 小时
注册时间
2011-1-10
帖子
6619

青铜编剧史诗剧作家剧作品鉴家

4
发表于 2014-12-10 21:47:52 | 只看该作者
本帖最后由 H·H·Y 于 2014-12-10 21:53 编辑

第一页:并行处理
条件分歧:($game_map.events[@event_id].x - $game_player.x).abs <= 5 and ($game_map.events[@event_id].y - $game_player.y).abs <= 5
    独立开关:A = ON
结束

第二页:与事件接触(独立开关A打开时)
扣血or开启战斗



其中“5”是距离,可以自己改。

点评

╮(╯_╰)╭我的水平只到这里了……现在我都是脚本事件混用而且大部分还是事件……  发表于 2014-12-10 21:53
设置一堆并行事件不会卡飞吗……  发表于 2014-12-10 21:49
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10229
在线时间
5019 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

5
发表于 2014-12-10 21:58:27 | 只看该作者
本帖最后由 VIPArcher 于 2014-12-10 22:05 编辑

这个游戏里的某个脚本大概就是你想要的。
https://rpg.blue/thread-371221-1-1.html
另外这个帖子里的各个版本的脚本大概都可以符合你的要求。
https://rpg.blue/thread-369039-1-1.html(其中1楼的脚本貌似就是上面那个游戏用到的那个。(反正我没用过
回复 支持 反对

使用道具 举报

Lv6.析梦学徒

老鹰

梦石
40
星屑
35602
在线时间
6821 小时
注册时间
2012-5-26
帖子
3276

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

6
发表于 2014-12-11 19:04:19 | 只看该作者
  1. #==============================================================================
  2. # +++ MOG - Event Sensor Range (v1.0) +++
  3. #==============================================================================
  4. # By Moghunter
  5. # http://www.atelier-rgss.com
  6. #==============================================================================
  7. # Permite que o evento tenha dois comportamentos, de curta distância e de
  8. # longa distância.
  9. #===============================================================================
  10. # - Utilização
  11. # Crie uma página com a condição de ativação Self Switch D, está página será
  12. # usada quando o player estiver perto do evento.
  13. # Defina a area do sensor do evento colocando este nome no evento.
  14. #
  15. # <SensorX>
  16. #
  17. # X = 视野范围半径
  18. #
  19. #===============================================================================
  20. module MOG_EVENT_SENSOR
  21.   #打开的独立开关
  22.   SENSOR_SELF_SWITCH = "D"
  23. end

  24. #===============================================================================
  25. # ■ GAME EVENT
  26. #===============================================================================
  27. class Game_Event < Game_Character
  28.   
  29.   attr_reader   :sensor_range
  30.   
  31.   #--------------------------------------------------------------------------
  32.   # ● Initialize
  33.   #--------------------------------------------------------------------------            
  34.   alias mog_event_sensor_initialize initialize
  35.   def initialize(map_id, event)
  36.       mog_event_sensor_initialize(map_id, event)
  37.       setup_event_sensor
  38.   end
  39.   
  40.   #--------------------------------------------------------------------------
  41.   # ● Setup Event Sensor
  42.   #--------------------------------------------------------------------------         
  43.   def setup_event_sensor
  44.       @sensor_range =  @event.name =~ /<Sensor(\d+)>/ ? $1.to_i : 0
  45.   end  
  46.   
  47.   #--------------------------------------------------------------------------
  48.   # ● Update
  49.   #--------------------------------------------------------------------------            
  50.   alias mog_event_sensor_update update
  51.   def update
  52.       mog_event_sensor_update
  53.       update_event_sensor
  54.   end  
  55.   
  56.   #--------------------------------------------------------------------------
  57.   # ● Update Sensor
  58.   #--------------------------------------------------------------------------        
  59.   def update_event_sensor
  60.       return if @sensor_range == 0
  61.       distance = ($game_player.x - self.x).abs + ($game_player.y - self.y).abs
  62.       enable   = (distance <= @sensor_range)
  63.       key = [$game_map.map_id, self.id, MOG_EVENT_SENSOR::SENSOR_SELF_SWITCH]
  64.       last_enable = $game_self_switches[key]
  65.       execute_sensor_effect(enable,key) if enable != last_enable
  66.     end

  67.   #--------------------------------------------------------------------------
  68.   # ● Execute_Sensor Effect
  69.   #--------------------------------------------------------------------------            
  70.   def execute_sensor_effect(enable,key)      
  71.       @pattern = 0
  72.       @pattern_count = 0               
  73.       $game_self_switches[key] = enable
  74.       self.refresh
  75.   end
  76.    
  77. end

  78. $mog_rgss3_event_sensor = true
复制代码
敌人视野脚本
在事件的名称后面加上<Sensor2>就表示人物距离敌人总共2格时,开启敌人事件页中的独立开关D
这样在D开启的事件页中加上移动方式为接近就行了。
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22461
在线时间
8598 小时
注册时间
2011-12-31
帖子
3364
7
发表于 2014-12-11 19:27:52 | 只看该作者
本帖最后由 tseyik 于 2014-12-11 19:58 编辑

移動ルート条件分岐
這個複雑一些,但更霊活
http://woodpenguin.web.fc2.com/rgss3/route_branch.html
移動ルート設定時可用条件(開関/変数)決定分岐。

RUBY 代码复制
  1. =begin
  2.  
  3.  ▼ 移動ルートの条件分岐 ver. 1.0
  4.  
  5.  RPGツクールVXAce用スクリプト
  6.  
  7.  制作 : 木星ペンギン
  8.  URL  : [url]http://woodpenguin.blog.fc2.com/[/url]
  9.  
  10. ------------------------------------------------------------------------------
  11.  概要
  12.  
  13.  □ 移動ルートの設定で条件分岐が使用できるようになります。
  14.  
  15. ------------------------------------------------------------------------------
  16.  使い方
  17.  
  18.  ・ 移動ルート設定のスクリプトで、以下の文字列を入力すると条件分岐を行えます。
  19.  
  20.    if 条件              => 条件が真の場合の処理
  21.    else                 => 上記での条件に当てはまらない場合の処理
  22.    end                  => 条件分岐の終了
  23.  
  24.  ・ unless や elsif のような機能はありません。
  25.  
  26.  ・ 基本的にRubyの条件分岐と同じです。
  27.  
  28.  ・ 条件分岐中に別の条件分岐を入れることは可能です。
  29.  
  30.  ・ 条件では s でスイッチ、v で変数を参照できます。
  31.  
  32.  ・ セルフ変数も使用できます。
  33.     併用する場合はこちらのスクリプトを下にしてください。
  34.  
  35. =end
  36.  
  37. module WdTk
  38. module RouteBranch
  39. #//////////////////////////////////////////////////////////////////////////////
  40. #
  41. # 設定項目
  42. #
  43. #//////////////////////////////////////////////////////////////////////////////
  44.  
  45.   #--------------------------------------------------------------------------
  46.   # ● 移動ルートの処理改善
  47.   #     1 フレームに一行しか処理されない移動ルートの処理を
  48.   #     1 フレーム内に可能な限り処理を行うように変更します。
  49.   #--------------------------------------------------------------------------
  50.   RouteEX = true
  51.  
  52.  
  53. #//////////////////////////////////////////////////////////////////////////////
  54. #
  55. # 以降、変更する必要なし
  56. #
  57. #//////////////////////////////////////////////////////////////////////////////
  58.  
  59. end
  60.  
  61.   @material ||= []
  62.   @material << :RouteBranch
  63.   def self.include?(sym)
  64.     @material.include?(sym)
  65.   end
  66.  
  67. end
  68.  
  69. #==============================================================================
  70. # ■ Game_Character
  71. #==============================================================================
  72. class Game_Character
  73. if WdTk::RouteBranch::RouteEX
  74.   #--------------------------------------------------------------------------
  75.   # ◯ ルートに沿った移動の更新
  76.   #--------------------------------------------------------------------------
  77.   alias _wooden_ex_update_routine_move update_routine_move
  78.   def update_routine_move
  79.     if @wait_count > 0
  80.       @wait_count -= 1
  81.     else
  82.       _wooden_ex_update_routine_move
  83.       if @move_route_forcing && @move_succeed && stopping? &&
  84.         @wait_count == 0 && @move_route_index >= 0
  85.         update_routine_move
  86.       end
  87.     end
  88.   end
  89. end # if WdTk::RouteBranch::RouteEX
  90.   #--------------------------------------------------------------------------
  91.   # ◯ 移動コマンドの処理
  92.   #--------------------------------------------------------------------------
  93.   alias _wdtk_routeb_process_move_command process_move_command
  94.   def process_move_command(command)
  95.     if command.code == ROUTE_SCRIPT
  96.       case command.parameters[0]
  97.       when /if\s+(.+)/
  98.         command_skip(/else|end/) unless route_eval($1)
  99.         return
  100.       when "else"
  101.         command_skip("end")
  102.         return
  103.       when "end"
  104.         return
  105.       end
  106.     end
  107.     _wdtk_routeb_process_move_command(command)
  108.   end
  109.   #--------------------------------------------------------------------------
  110.   # ● 移動ルート用
  111.   #--------------------------------------------------------------------------
  112.   def route_eval(formula)
  113.     s, v = $game_switches, $game_variables
  114.     begin
  115.       eval(formula)
  116.     rescue
  117.       msgbox "以下の条件判定でエラーが出ました。\n\n", formula
  118.       true
  119.     end
  120.   end
  121.   #--------------------------------------------------------------------------
  122.   # ● コマンドスキップ
  123.   #--------------------------------------------------------------------------
  124.   def command_skip(text)
  125.     @move_route_index += 1
  126.     loop do
  127.       command = @move_route.list[@move_route_index]
  128.       case command.code
  129.       when ROUTE_END
  130.         @move_route_index -= 1
  131.         return
  132.       when ROUTE_SCRIPT
  133.         case command.parameters[0]
  134.         when /^if\s/
  135.           command_skip("end")
  136.         when text
  137.           return
  138.         end
  139.       end
  140.       @move_route_index += 1
  141.     end
  142.   end
  143. end
  144.  
  145. #==============================================================================
  146. # ■ Game_Event
  147. #==============================================================================
  148. if WdTk.include?(:SelfVar)
  149. class Game_Event
  150.   #--------------------------------------------------------------------------
  151.   # ● ルートに沿った移動の更新
  152.   #--------------------------------------------------------------------------
  153.   def update_routine_move
  154.     $game_variables.set_key(@map_id, @id)
  155.     super
  156.     $game_map.interpreter.initiative_selfvar
  157.   end
  158. end
  159. end # if WdTk.include?(:SelfVar)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
314 小时
注册时间
2013-2-4
帖子
81
8
 楼主| 发表于 2014-12-12 18:12:16 | 只看该作者
tseyik 发表于 2014-12-10 21:45
@zdqhzs
経路探索VXAce
http://rpg.blue/forum.php?mod=viewthread&tid=336594

只使用里面的“MOG - Event Sensor Range”脚本后靠近怪物发生脚本BUG,必须把里面的脚本都复制吗?

无标题.png (7.97 KB, 下载次数: 26)

无标题.png

点评

要复制三個脚本,注釈取得スクリプト,経路探索VXAce,MOG - Event Sensor Range  发表于 2014-12-12 19:11
谜梦个人工作室:群号  397549060
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
314 小时
注册时间
2013-2-4
帖子
81
9
 楼主| 发表于 2014-12-12 19:59:03 | 只看该作者
tseyik 发表于 2014-12-10 21:45
@zdqhzs
経路探索VXAce
http://rpg.blue/forum.php?mod=viewthread&tid=336594

解决了。。。。多谢指点。
谜梦个人工作室:群号  397549060
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-7-22 02:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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