Project1

标题: 怪物范围攻击 [打印本页]

作者: y967    时间: 2016-9-22 08:21
标题: 怪物范围攻击
明雷怪,让怪在离角色一定距离内就接近角色主动攻击,距离外就随机移动,如何实现
作者: 夜狠简单    时间: 2016-9-22 21:16
本帖最后由 夜狠简单 于 2016-9-22 21:23 编辑
思路

作者: 夜狠简单    时间: 2016-9-22 21:16
本帖最后由 夜狠简单 于 2016-9-23 12:06 编辑

看看这个
http://rpg.blue/thread-108850-1-1.html
作者: 89444640    时间: 2016-9-23 12:53
本帖最后由 89444640 于 2016-9-23 13:17 编辑
夜狠简单 发表于 2016-9-22 21:16
看看这个
http://rpg.blue/thread-108850-1-1.html


看了,这个系统比较详细,非常感谢。但是没范例,应该怎么用呢?是不是用作者描述的代码在事件中写上然后并行处理?
试了一下好像知道了,应该是单独建立个事件开关D打开时候更改角色移动为接近。

那个颜色方面我还有个疑问, 这个帖子说 默认视线颜色是0xf0 16进制的颜色代码 我改为0XFF应该是红,可是显示出来却是青色,请问这是是为何?
作者: cmmd1    时间: 2016-9-23 15:23
我看你需要这个

RUBY 代码复制
  1. #==============================================================================
  2. # ■ XP敌人视野脚本 BY 万兽熊最高
  3. # [url]http://bearrpg.weebly.com[/url]
  4. #==============================================================================
  5. module SEEK
  6.   #定义敌人事件的标记,把敌人事件的名字改成下面设定的字符串就成。
  7.   ENE_TAG = "enemy"
  8.   #定义敌人的视野距离,默认为5格
  9.   SEEK_DIS = 5
  10.   #定义逃出视野距离,默认为7格
  11.   ESP_DIS = 7
  12.   #定义发现目标时播放的动画ID,默认98
  13.   ANI_ID = 98
  14. end
  15. class Game_Character
  16.   alias bearrpg update
  17.   def update
  18.     seek_player
  19.     bearrpg
  20.   end
  21.   #--------------------------------------------------------------------------
  22.   # ● 敌人追击范围判定
  23.   #--------------------------------------------------------------------------
  24.   def viewrange
  25.     if ($game_player.x-@x)**2 + ($game_player.y-@y)**2 < SEEK::SEEK_DIS**2
  26.       case @direction
  27.           when 2
  28.            return false if $game_player.y < @y
  29.           when 4
  30.            return false if $game_player.x > @x
  31.           when 6
  32.            return false if $game_player.x < @x
  33.           when 8
  34.            return false if $game_player.y > @y
  35.          end
  36.          return true
  37.        else
  38.          return false
  39.       end
  40.   end
  41.   #--------------------------------------------------------------------------
  42.   # ● 逃出视野范围
  43.   #--------------------------------------------------------------------------
  44.   def viewout
  45.     return false if ($game_player.x-@x)**2 + ($game_player.y-@y)**2 < SEEK::ESP_DIS**2
  46.     return true
  47.   end
  48.   #--------------------------------------------------------------------------
  49.   # ● 发现玩家
  50.   #--------------------------------------------------------------------------
  51.   def seek_player
  52.     return if @event == nil
  53.     return if @move_type == 0
  54.     for event in $game_map.events.values
  55.     if events = $game_map.events  
  56.     if @event.name == SEEK::ENE_TAG
  57.     if !@seeking && viewrange
  58.         @animation_id = SEEK::ANI_ID
  59.         @remain = [@move_type, @move_speed]
  60.         @seeking = true
  61.         @move_type = 2
  62.         @move_speed = @remain[1] += 1
  63.       elsif @seeking && viewout
  64.       @seeking = false
  65.       if @remain != nil
  66.         @move_type = @remain[0]
  67.         @move_speed -= 1
  68.       end
  69.     end
  70.    end
  71.   end
  72. end
  73. end
  74. end





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