赞 | 0 |
VIP | 187 |
好人卡 | 12 |
积分 | 1 |
经验 | 6042 |
最后登录 | 2012-10-8 |
在线时间 | 333 小时 |
Lv1.梦旅人 穿越一季:朔
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 333 小时
- 注册时间
- 2007-4-11
- 帖子
- 5369
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 后知后觉 于 2009-12-5 01:02 编辑
Say:脚本与事件共行。奇思妙想者居上
友情提示:坚持走事件征途的同学可以尝试一下开拓自己的制作思路.
◆第二话◆
<双子连心>
(只具有观赏性)
即是双角色游戏,由玩家选择性切换角色进行游戏,适合地图解谜系统.
如A角色.B角色 同时困在迷宫里.A角色通行的开关在B角色所能到达的地方.
这样就形成了单玩家互助双子系统.
以下为具体构思.
因为考虑到有多人操作,如3人甚至更多,所以这里做了一点小小的手脚.
那就是不显示主角.也就是说其实是三人状态了.这个思路供大家拓展.开讲
总的来说,用事件来做虽然很简单,但如果是大型游戏,这个系统请不要使用.后面会讲到
总体思路:也就是主角和事件之间的切换或者事件和事件的切换.这里讲的为后者
建立A并行事件和B并行事件为"游戏角色"
A,B事件(自己设置行走图片)里分别设置如下分歧
当↑被按下的时候,事件A向上行走
当↓被按下的时候,事件A向下行走
依次类推
这样就可以形成类似模仿的效果.
然后做出按键切换效果.
即分歧判断一个按键即可,如设置为[A]键(键盘上的Shift或Z键)
然后通过上一讲的内容起用变量判断.上一讲有详细讲到,这里就不用罗嗦了{/hx}
直接放图
这样切换的效果就形成了,也就是A键是用来切换A,B事件之间的开关的.
P.s在切换那一段我加入了镜头移动脚本.
如果切换效果也用事件做的话,可以直接指定4个变量为A事件的X,Y坐标 B事件的X,Y坐标
然后通过判断后移动便可以实现A,B之间的镜头切换,因为这样很失真,不推荐使用....
这样就基本完成.但因为是事件,如果触发另外事件要怎么做呢?
这里就可以用到和事件镜头切换的方式一样,同样指定触发事件的坐标变量进行判断即可.
如推箱子效果~
所以大型游戏还是放弃此思路.
不过这里有一个游戏供大家参考,也就是精灵的<我的家>,里面完全可以事件与事件接触然后触发事件-_-..但因为脚本版权的关系,这里不便公布,大家可以自行搜索下载体会.
总之这个构思具体来说并不实用.具有很大的烦琐性.仅供小游戏爱好者参考和观赏.
因为工作时间的关系,这一话讲得很仓促.所以依然放上范例供大家私下里自行体会
顺便贴上镜头跟随脚本- #==============================================================================
- # ■ 华丽镜头移动脚本 by 黑暗之神Kaiser.DS
- #------------------------------------------------------------------------------
- # 1-插入此段脚本到Main前面
- # 2-功能
- # a-[镜头平滑移动到事件/角色]
- # 在事件里的[设置移动路线]里选择需要镜头转向的角色输入脚本kds即可
- # b-[镜头跟随事件]
- # 在事件里的[设置移动路线]选择好需要跟随的事件后输入脚本kds_move_start开
- # 始跟随,当不想跟随时再输入kds_move_over
- #==============================================================================
- $平滑移动 = nil
- class Scene_Map
- alias kds_update update
- def update
- kds_update
- if $平滑移动 != nil
- cen_x = (320 - 16) * 4
- cen_y = (240 - 16) * 4
- max_x = ($game_map.width - 20) * 128
- max_y = ($game_map.height - 15) * 128
- display_x = [0, [$平滑移动.x * 128 - cen_x, max_x].min].max
- display_y = [0, [$平滑移动.y * 128 - cen_y, max_y].min].max
- if $game_map.display_x != display_x
- if ($game_map.display_x - display_x).abs < 22
- $game_map.display_x = display_x
- else
- $game_map.display_x += (display_x - $平滑移动.old_display_x)/8
- end
- end
- if $game_map.display_y != display_y
- if ($game_map.display_y - display_y).abs <= 22
- $game_map.display_y = display_y
- else
- $game_map.display_y += (display_y - $平滑移动.old_display_y)/8
- end
- end
- if $game_map.display_x == display_x and $game_map.display_y == display_y
- $平滑移动.center($平滑移动.x, $平滑移动.y)
- $平滑移动 = nil
- end
- return
- end
- end
- end
- class Game_Character
- CENTER_X = (320 - 16) * 4
- CENTER_Y = (240 - 16) * 4
- attr_accessor :old_display_x
- attr_accessor :old_display_y
- attr_accessor :kds_move
- def center(x, y)
- max_x = ($game_map.width - 20) * 128
- max_y = ($game_map.height - 15) * 128
- $game_map.display_x = [0, [x * 128 - CENTER_X, max_x].min].max
- $game_map.display_y = [0, [y * 128 - CENTER_Y, max_y].min].max
- end
- def kds
- @old_display_x = $game_map.display_x
- @old_display_y = $game_map.display_y
- case @id
- when 0
- $平滑移动 = $game_player
- else
- $平滑移动 = $game_map.events[@id]
- end
- end
- def kds_move_start
- @kds_move = ""
- end
- def kds_move_over
- @kds_move = nil
- end
- alias kds_update update
- def update
- last_real_x = @real_x
- last_real_y = @real_y
- kds_update
- if @kds_move != nil
- if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y
- $game_map.scroll_down(@real_y - last_real_y)
- end
- if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
- $game_map.scroll_left(last_real_x - @real_x)
- end
- if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
- $game_map.scroll_right(@real_x - last_real_x)
- end
- if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y
- $game_map.scroll_up(last_real_y - @real_y)
- end
- end
- end
- end
- #==============================================================================
复制代码 范例(191kb)地址:http://rpg.blue/upload_program/d ... ��心_118199591.rar
另外大家有什么好的思路请站内短信或者留言.我会第一时间构思事件或脚本(以事件为主)的做法
下一讲:事件版烛光(类似传奇蜡烛装备效果)系统
<我们的事件> 第一话 事件版标题
|
|