Project1

标题: 一个简单的问题,没在资源贴内找到 [打印本页]

作者: 512195574    时间: 2010-8-24 20:44
标题: 一个简单的问题,没在资源贴内找到
我想设置明怪,而不是踩雷似的。
所以只能让怪接近主角触发战斗,不过那样的话全屏的怪都跑主角这里来了。:funk:
有没有什么脚本,让主角走到怪的几行内(7行最好),怪才跑过来。
作者: 后知后觉    时间: 2010-8-24 21:28
本帖最后由 后知后觉 于 2010-8-24 21:41 编辑

打开脚本编辑器.找到 Game_Character 2
默认情况下是这样的内容.第 157 行
  1. if sx + sy >= 20
复制代码
这就是默认的算法.x.y.差值之和在 20 以上才 随机移动.
把这一行改成你要的 7 行.就是这样
  1. if sx > 7 or sy > 7
复制代码
这样就可以了.
然后把
事件的 移动规则 -> 类型
设置为 接近
事件的 事件开始条件.
设置为 与事件接触

作者: 429259591    时间: 2010-8-24 21:34
LZ是想接触怪物了后进入战斗吧
作者: 512195574    时间: 2010-8-24 22:15
本帖最后由 512195574 于 2010-8-24 22:18 编辑

谢谢2L了,怎么设置满意答案?
作者: 小米LV10    时间: 2010-8-24 22:26
........
作者: 512195574    时间: 2010-8-25 10:29
回复 后知后觉 的帖子
多问一下,如果这样的话,那野怪确实不走到他的7步之内他不过来,不过,只要怪发现了主角,他就会一直执行靠近命令到底,有什么办法让他再次离开主角就不执行靠近命令呢。
也可以就是他有自己的一定的活动范围,超出了就返回,类似网游中的怪物。总不至于追到城里来

   
作者: 后知后觉    时间: 2010-8-25 11:32
本帖最后由 后知后觉 于 2010-8-25 13:01 编辑

回复 512195574 的帖子


更正一下.那一行应该是这样写
  1. if sx.abs > 7 or sy.abs > 7
复制代码
一般来说.主角的移动速度是比怪物快的.
怪物靠近的时候.迅速把主角远离怪物7格以外.
怪物就不会追过来了.而是随机移动.
至于怪物不能越过某个 界限.
这个的制作思路目前没想好.
就我见过的RM制作的游戏.其实一般都不会把野外和城镇放在同一个地图上.
都是靠 场所移动 来连接的.
地图事件正常情况下是不可能跨地图执行的.

==========================================================

把下面这段放到脚本编辑器的 Main 脚本的上面...别的地方就不用改了...
主角在远离怪物 7 格的时候. 怪物如果远离了自己的出生地 7 格的话就会向着出生地的方向移动.
不过怪物不能越过某个界限还是没有做.这个你自己想办法吧.
做了个范例.范例里还有你问的那个 计时器.自己对照下吧.
Project2.rar (187.08 KB, 下载次数: 29)

  1. #==============================================================================
  2. # ■ Game_Character
  3. #==============================================================================

  4. class Game_Character
  5.   #--------------------------------------------------------------------------
  6.   # ● 移动类型 : 接近
  7.   #--------------------------------------------------------------------------
  8.   def move_type_toward_player
  9.     sx = @x - $game_player.x
  10.     sy = @y - $game_player.y
  11.     if sx.abs > 7 or sy.abs > 7
  12.       sxs = @x - (@event.nil? ? $game_player.x : @event.x)
  13.       sys = @y - (@event.nil? ? $game_player.y : @event.y)
  14.       if sxs.abs > 7 or sys.abs > 7
  15.         # 靠近自己的出生地
  16.         move_toward_self_birthplace
  17.         return
  18.       end
  19.       # 随机移动
  20.       move_random
  21.       return
  22.     end
  23.     case rand(6)
  24.     when 0..3  # 接近主角
  25.       move_toward_player
  26.     when 4  # 随机
  27.       move_random
  28.     when 5  # 前进一步
  29.       move_forward
  30.     end
  31.   end
  32.   #--------------------------------------------------------------------------
  33.   # ● 接近自己的出生地
  34.   #--------------------------------------------------------------------------
  35.   def move_toward_self_birthplace
  36.     sx = @x - (@event.nil? ? $game_player.x : @event.x)
  37.     sy = @y - (@event.nil? ? $game_player.y : @event.y)
  38.     if sx == 0 and sy == 0
  39.       return
  40.     end
  41.     abs_sx = sx.abs
  42.     abs_sy = sy.abs
  43.     if abs_sx == abs_sy
  44.       rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
  45.     end
  46.     if abs_sx > abs_sy
  47.       sx > 0 ? move_left : move_right
  48.       if not moving? and sy != 0
  49.         sy > 0 ? move_up : move_down
  50.       end
  51.     else
  52.       sy > 0 ? move_up : move_down
  53.       if not moving? and sx != 0
  54.         sx > 0 ? move_left : move_right
  55.       end
  56.     end
  57.   end
  58. end
复制代码

作者: 512195574    时间: 2010-8-25 14:24
回复 后知后觉 的帖子
谢谢了,帮了大忙。其实界限的问题和远离主角就返回只要解决一个就行了。




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