赞 | 5 |
VIP | 620 |
好人卡 | 38 |
积分 | 69 |
经验 | 125468 |
最后登录 | 2015-7-27 |
在线时间 | 1666 小时 |
Lv4.逐梦者
- 梦石
- 0
- 星屑
- 6860
- 在线时间
- 1666 小时
- 注册时间
- 2008-10-29
- 帖子
- 6710
|
本帖最后由 后知后觉 于 2010-8-25 13:01 编辑
回复 512195574 的帖子
更正一下.那一行应该是这样写- if sx.abs > 7 or sy.abs > 7
复制代码 一般来说.主角的移动速度是比怪物快的.
怪物靠近的时候.迅速把主角远离怪物7格以外.
怪物就不会追过来了.而是随机移动.
至于怪物不能越过某个 界限.
这个的制作思路目前没想好.
就我见过的RM制作的游戏.其实一般都不会把野外和城镇放在同一个地图上.
都是靠 场所移动 来连接的.
地图事件正常情况下是不可能跨地图执行的.
==========================================================
把下面这段放到脚本编辑器的 Main 脚本的上面...别的地方就不用改了...
主角在远离怪物 7 格的时候. 怪物如果远离了自己的出生地 7 格的话就会向着出生地的方向移动.
不过怪物不能越过某个界限还是没有做.这个你自己想办法吧.
做了个范例.范例里还有你问的那个 计时器.自己对照下吧.
Project2.rar
(187.08 KB, 下载次数: 29)
- #==============================================================================
- # ■ Game_Character
- #==============================================================================
- class Game_Character
- #--------------------------------------------------------------------------
- # ● 移动类型 : 接近
- #--------------------------------------------------------------------------
- def move_type_toward_player
- sx = @x - $game_player.x
- sy = @y - $game_player.y
- if sx.abs > 7 or sy.abs > 7
- sxs = @x - (@event.nil? ? $game_player.x : @event.x)
- sys = @y - (@event.nil? ? $game_player.y : @event.y)
- if sxs.abs > 7 or sys.abs > 7
- # 靠近自己的出生地
- move_toward_self_birthplace
- return
- end
- # 随机移动
- move_random
- return
- end
- case rand(6)
- when 0..3 # 接近主角
- move_toward_player
- when 4 # 随机
- move_random
- when 5 # 前进一步
- move_forward
- end
- end
- #--------------------------------------------------------------------------
- # ● 接近自己的出生地
- #--------------------------------------------------------------------------
- def move_toward_self_birthplace
- sx = @x - (@event.nil? ? $game_player.x : @event.x)
- sy = @y - (@event.nil? ? $game_player.y : @event.y)
- if sx == 0 and sy == 0
- return
- end
- abs_sx = sx.abs
- abs_sy = sy.abs
- if abs_sx == abs_sy
- rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
- end
- if abs_sx > abs_sy
- sx > 0 ? move_left : move_right
- if not moving? and sy != 0
- sy > 0 ? move_up : move_down
- end
- else
- sy > 0 ? move_up : move_down
- if not moving? and sx != 0
- sx > 0 ? move_left : move_right
- end
- end
- end
- end
复制代码 |
|