赞 | 1 |
VIP | 2 |
好人卡 | 18 |
积分 | 3 |
经验 | 7766 |
最后登录 | 2012-5-1 |
在线时间 | 227 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 255
- 在线时间
- 227 小时
- 注册时间
- 2009-7-26
- 帖子
- 216
|
本帖最后由 darkscout3000 于 2011-10-12 11:05 编辑
先回答第一个问题
事件的名字这个嘛是在Game_Map类里头,有个@map属性这里用的就是RPG::Event类
第二个问题
这个其实一点都不复杂
你需要做三件事情
第一步,在地图的数据中加入事件
Game_Map类里头有个@events属性,纪录了地图上所有的事件
你需要做的就是加一个事件进去,把这段插入 Game_Map 类- def add_event(x, y, name, picture_name)
- event = RPG::Event.new(x,y, name)
- event.name = name # 事件名字
- event.id = @events.keys.max + 1 # 事件ID
- event.pages[0].graphic.character_name = picture_name #事件图像
- event.pages[0].walk_anime = true #选项「移动时动画」的真伪值。
- event.pages[0].step_anime = true #选项「停止时动画」的真伪值。
- event.pages[0].direction_fix = false #选项「固定朝向」的真伪值。
- event.pages[0].through = false #选项「充许穿透」的真伪值。
- event.pages[0].always_on_top #选项「在最前面显示」的真伪值。
- event.pages[0].trigger = 0 #触发条件(0:决定键,1:与主角接触,2:与事件接触,3:自动执行,4:并行处理)。
- event.pages[0].list.push(RPG::MoveCommand(355, ["脚本代码第一行", "脚本第二行" ...])) # 355 是执行脚本的代码
- @events[event.id] = event
- return event.id
- end
复制代码 那个pages其实很好理解,你知道每个事件都有很多事件页吧?pages[0]就是第一页
你在地图上添加事件不是可以选择一个角色图片么?你就用那个里头的名字就好了(只要名字,不要路径)
大多属性还是比较直观的,就是加入事件比较麻烦
第二步,把事件添加到地图精灵组
事件在地图上显示是Spriteset_Map类控制的
总之先在Spriteset_Map类中加入以下方法- def add_event_sprite(event_id)
- sprite = Sprite_Character.new(@viewport1, $game_map.events[event_id])
- @character_sprites.push(sprite)
- end
复制代码 第三步,让事件显示出来
最后是Scene_Map类
加入以下方法- def add_event(x, y, name, picture_name)
- event_id = $game_map.add_event(x,y,name,picture_name)
- @spriteset.add_event_sprite(event_id)
复制代码 这样就基本完成了
剩下的就是写个脚本(前提是你在地图上)
- $scene.add_event(10,10,"noob", "001-Fighter01")
复制代码 然后阿尔西斯就在地图坐标(10,10)出现了⋯⋯
如果有bug就问吧,毕竟是凭记忆打的代码⋯⋯
��� |
评分
-
查看全部评分
|