Project1
标题:
如何事件面向事件?
[打印本页]
作者:
277297575
时间:
2010-11-8 08:48
标题:
如何事件面向事件?
本帖最后由 277297575 于 2010-11-9 12:58 编辑
要一个事件面向另一个事件,下面是参照面向主角在Game_Character里写的,但是出错了,请教指点。
def turn_toward_event(event_id)
sx = @x - $game_map.events[event_id].x
sy = @y - $game_map.events[event_id].y
if sx.abs > sy.abs # 横向距离更长?
sx > 0 ? turn_left : turn_right
elsif sx.abs < sy.abs # 纵向距离更长?
sy > 0 ? turn_up : turn_down
end
end
作者:
38571240
时间:
2010-11-8 19:16
本帖最后由 38571240 于 2010-11-8 19:18 编辑
看LZ的写法,是想在脚本里实现这个方法,只要稍作修改即可,请在脚本区Main之前插入以下:
#--------------------------------------------------------------------------
# 用法:在某处触发【$game_map.events[A事件ID].turn_toward_event(B事件ID)】
# 这样A事件将朝向B事件
#--------------------------------------------------------------------------
class Game_Event < Game_Character
#--------------------------------------------------------------------------
# ● 定义实例变量
#--------------------------------------------------------------------------
attr_reader :x # 地图逻辑 X 座标
attr_reader :y # 地图逻辑 Y 座标
attr_reader :direction # 面向
attr_reader :id # ID
def turn_toward_event(id)
sx = @x - $game_map.events[id].x
sy = @y - $game_map.events[id].y
if sx.abs > sy.abs # 横向距离更长?
@direction = sx > 0 ? 4 : 6
elsif sx.abs < sy.abs # 纵向距离更长?
@direction = sy > 0 ? 8 : 2
end
end
end
复制代码
用法:假如地图上有两个事件,如事件ID分别为1和2,只要触发$game_map.events[2].turn_toward_event(1)
那么2号事件将根据坐标差朝向1号事件的方向。
范例:
朝向.exe
(406.09 KB, 下载次数: 57)
2010-11-8 19:15 上传
点击文件名下载附件
作者:
277297575
时间:
2010-11-8 19:46
原来要添加实例变量........
还有范例,感谢,感谢了。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1