查看: 3744|回复: 2

[已经解决] 如何设置事件的视线?

[复制链接]
梦石
0
星屑
85
在线时间
87 小时
注册时间
2013-1-13
回帖
43
发表于 2015-6-23 16:22:00 | 显示全部楼层 |阅读模式

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

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

×
是这样的,我想设计一个潜入任务,然后每一个事件都装了烛光系统的光晕,如果主角进去光晕则判定为暴露,事件会追主角,那么如何设置事件的视野?

老鹰

梦石
40
星屑
37812
在线时间
7091 小时
注册时间
2012-5-26
回帖
3297

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

发表于 2015-6-23 17:27:40 | 显示全部楼层
本帖最后由 百里_飞柳 于 2015-6-23 17:29 编辑

似乎要判定圆形区域的话……rm做的成吗?
我这里有一个收录的事件sensor range脚本,可以判定玩家距离事件的位置(即△x+△y的和,一个格子为1)为x时,事件页中的独立开关D打开。

使用方法:事件名称中添加 <SensorX>  X替换为距离
  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
复制代码

点评

对,一个格子为1,X计算的是玩家与事件距离的折线的格子数  发表于 2015-6-24 12:17
就是这个,是矩形的吗?不管怎样谢谢了  发表于 2015-6-23 18:25

评分

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

查看全部评分

回复

使用道具 举报

梦石
0
星屑
48
在线时间
784 小时
注册时间
2013-1-4
回帖
1057
发表于 2015-6-23 19:52:16 | 显示全部楼层
我只知道一般这种高级的AI最好做成状态机。。。
如果有程序底子的话 去看看饥荒的源码(data/scripts/stategraphs文件夹里就是他的AI状态机的部分)
RM-GUI延期。。。最近被黑心老板压迫T_T
二次元少女的shitake,长着长脸,身高165,蓝色卷双马尾,FCUP,瞳色黑色,病气和御宅属性,是天才少女。
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部