Project1
标题:
一个简单的问题,没在资源贴内找到
[打印本页]
作者:
512195574
时间:
2010-8-24 20:44
标题:
一个简单的问题,没在资源贴内找到
我想设置明怪,而不是踩雷似的。
所以只能让怪接近主角触发战斗,不过那样的话全屏的怪都跑主角这里来了。:funk:
有没有什么脚本,让主角走到怪的几行内(7行最好),怪才跑过来。
作者:
后知后觉
时间:
2010-8-24 21:28
本帖最后由 后知后觉 于 2010-8-24 21:41 编辑
打开脚本编辑器.找到 Game_Character 2
默认情况下是这样的内容.第 157 行
if sx + sy >= 20
复制代码
这就是默认的算法.x.y.差值之和在 20 以上才 随机移动.
把这一行改成你要的 7 行.就是这样
if sx > 7 or sy > 7
复制代码
这样就可以了.
然后把
事件的
移动规则
->
类型
设置为
接近
事件的
事件开始条件
.
设置为
与事件接触
作者:
429259591
时间:
2010-8-24 21:34
LZ是想接触怪物了后进入战斗吧
20.png
(40.09 KB, 下载次数: 2)
下载附件
保存到相册
2010-8-24 21:34 上传
作者:
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
的帖子
更正一下.那一行应该是这样写
if sx.abs > 7 or sy.abs > 7
复制代码
一般来说.主角的移动速度是比怪物快的.
怪物靠近的时候.迅速把主角远离怪物7格以外.
怪物就不会追过来了.而是随机移动.
至于怪物不能越过某个 界限.
这个的制作思路目前没想好.
就我见过的RM制作的游戏.其实一般都不会把野外和城镇放在同一个地图上.
都是靠
场所移动
来连接的.
地图事件
正常情况下是不可能跨地图执行的.
==========================================================
把下面这段放到脚本编辑器的 Main 脚本的上面...别的地方就不用改了...
主角在远离怪物 7 格的时候. 怪物如果远离了自己的出生地 7 格的话就会向着出生地的方向移动.
不过怪物不能越过某个界限还是没有做.这个你自己想办法吧.
做了个范例.范例里还有你问的那个 计时器.自己对照下吧.
Project2.rar
(187.08 KB, 下载次数: 29)
2010-8-25 12:52 上传
点击文件名下载附件
#==============================================================================
# ■ 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
复制代码
作者:
512195574
时间:
2010-8-25 14:24
回复
后知后觉
的帖子
谢谢了,帮了大忙。其实界限的问题和远离主角就返回只要解决一个就行了。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1