设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3138|回复: 8
打印 上一主题 下一主题

[原创发布] 《我们的事件》第二话 伪◆双子连心

 关闭 [复制链接]

Lv1.梦旅人

穿越一季:朔

梦石
0
星屑
50
在线时间
333 小时
注册时间
2007-4-11
帖子
5369

贵宾

跳转到指定楼层
1
发表于 2009-3-23 09:18:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 后知后觉 于 2009-12-5 01:02 编辑

注明:此系列教程提供给已经熟悉RM工具基本的框架并且可以使用简单的事件以及脚本进行制作游戏的同学学习。



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之间的镜头切换,因为这样很失真,不推荐使用....

这样就基本完成.但因为是事件,如果触发另外事件要怎么做呢?
这里就可以用到和事件镜头切换的方式一样,同样指定触发事件的坐标变量进行判断即可.
如推箱子效果~

所以大型游戏还是放弃此思路.
不过这里有一个游戏供大家参考,也就是精灵的<我的家>,里面完全可以事件与事件接触然后触发事件-_-..但因为脚本版权的关系,这里不便公布,大家可以自行搜索下载体会.

总之这个构思具体来说并不实用.具有很大的烦琐性.仅供小游戏爱好者参考和观赏.

因为工作时间的关系,这一话讲得很仓促.所以依然放上范例供大家私下里自行体会

顺便贴上镜头跟随脚本
  1. #==============================================================================
  2. # ■ 华丽镜头移动脚本  by 黑暗之神Kaiser.DS
  3. #------------------------------------------------------------------------------
  4. #  1-插入此段脚本到Main前面
  5. #   2-功能
  6. #     a-[镜头平滑移动到事件/角色]
  7. #       在事件里的[设置移动路线]里选择需要镜头转向的角色输入脚本kds即可
  8. #     b-[镜头跟随事件]
  9. #       在事件里的[设置移动路线]选择好需要跟随的事件后输入脚本kds_move_start开
  10. #       始跟随,当不想跟随时再输入kds_move_over
  11. #==============================================================================
  12. $平滑移动 = nil
  13. class Scene_Map
  14.   alias kds_update update
  15.   def update
  16.     kds_update
  17.     if $平滑移动 != nil
  18.       cen_x = (320 - 16) * 4
  19.       cen_y = (240 - 16) * 4
  20.       max_x = ($game_map.width - 20) * 128
  21.       max_y = ($game_map.height - 15) * 128
  22.       display_x = [0, [$平滑移动.x * 128 - cen_x, max_x].min].max
  23.       display_y = [0, [$平滑移动.y * 128 - cen_y, max_y].min].max
  24.       if $game_map.display_x != display_x
  25.          if ($game_map.display_x - display_x).abs < 22
  26.            $game_map.display_x = display_x
  27.          else
  28.            $game_map.display_x += (display_x - $平滑移动.old_display_x)/8
  29.          end
  30.       end
  31.       if $game_map.display_y != display_y
  32.          if ($game_map.display_y - display_y).abs <= 22
  33.             $game_map.display_y = display_y
  34.          else
  35.             $game_map.display_y += (display_y - $平滑移动.old_display_y)/8
  36.          end
  37.       end
  38.       if $game_map.display_x == display_x  and $game_map.display_y == display_y
  39.          $平滑移动.center($平滑移动.x, $平滑移动.y)
  40.          $平滑移动 = nil
  41.       end
  42.       return
  43.     end
  44.   end  
  45. end
  46. class Game_Character
  47.   CENTER_X = (320 - 16) * 4
  48.   CENTER_Y = (240 - 16) * 4
  49.   attr_accessor :old_display_x
  50.   attr_accessor :old_display_y
  51.   attr_accessor :kds_move
  52.   def center(x, y)
  53.     max_x = ($game_map.width - 20) * 128
  54.     max_y = ($game_map.height - 15) * 128
  55.     $game_map.display_x = [0, [x * 128 - CENTER_X, max_x].min].max
  56.     $game_map.display_y = [0, [y * 128 - CENTER_Y, max_y].min].max
  57.   end
  58.   def kds
  59.     @old_display_x = $game_map.display_x
  60.     @old_display_y = $game_map.display_y
  61.     case @id
  62.     when 0
  63.       $平滑移动 = $game_player
  64.     else
  65.       $平滑移动 = $game_map.events[@id]
  66.     end
  67.   end
  68.   def kds_move_start
  69.       @kds_move = ""
  70.   end
  71.   def kds_move_over
  72.       @kds_move = nil
  73.   end
  74.   alias kds_update update
  75.   def update
  76.     last_real_x = @real_x
  77.     last_real_y = @real_y
  78.     kds_update
  79.     if @kds_move != nil
  80.      if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y
  81.        $game_map.scroll_down(@real_y - last_real_y)
  82.      end
  83.      if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
  84.        $game_map.scroll_left(last_real_x - @real_x)
  85.      end
  86.      if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
  87.       $game_map.scroll_right(@real_x - last_real_x)
  88.      end
  89.      if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y
  90.        $game_map.scroll_up(last_real_y - @real_y)
  91.      end
  92.     end
  93.   end  
  94. end
  95. #==============================================================================
复制代码
范例(191kb)地址:http://rpg.blue/upload_program/d ... ��心_118199591.rar

另外大家有什么好的思路请站内短信或者留言.我会第一时间构思事件或脚本(以事件为主)的做法


下一讲:事件版烛光(类似传奇蜡烛装备效果)系统



<我们的事件> 第一话 事件版标题

6R复活?别扯淡了.

柳柳一旦接手66RPG,我果断呵呵啊。

Lv1.梦旅人

梦石
0
星屑
50
在线时间
63 小时
注册时间
2008-11-20
帖子
45
2
发表于 2009-3-23 09:25:45 | 只看该作者
楼主勥……
脚本与事件并行,的确是一个解决问题的好办法(尤其对我这种学的vb语言,对rgss语言半知不解的人)
效果不错,顶你
(小灌水,这么晚你还不睡……)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

穿越一季:朔

梦石
0
星屑
50
在线时间
333 小时
注册时间
2007-4-11
帖子
5369

贵宾

3
 楼主| 发表于 2009-3-23 09:28:39 | 只看该作者
以下引用希望化身于2009-3-23 1:25:45的发言:

楼主勥……
脚本与事件并行,的确是一个解决问题的好办法(尤其对我这种学的vb语言,对rgss语言半知不解的人)
效果不错,顶你
(小灌水,这么晚你还不睡……)


现在就去睡~诸位..晚安
6R复活?别扯淡了.

柳柳一旦接手66RPG,我果断呵呵啊。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
60 小时
注册时间
2008-8-27
帖子
531
4
发表于 2009-3-23 15:58:09 | 只看该作者
刚用过楼主的第一个标题的教程,先顶了

回复 支持 反对

使用道具 举报

Lv1.梦旅人

巴斯克维尔的猎犬

梦石
0
星屑
50
在线时间
66 小时
注册时间
2007-6-25
帖子
8320

第1届Title华丽大赛冠军

5
发表于 2009-3-23 16:45:49 | 只看该作者
脚本和事件搭配是王道……

话说,我那个脚本事件搭配的XP五交通工具……似乎是坑掉了,汗汗||||
目前只发布了一个很麻烦的纯事件版的…= =
有时间一定要填上。。。{/gg}
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3304
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

6
发表于 2009-3-28 05:16:03 | 只看该作者
最在意的就是触发,
你说的是用坐标判断那个事件然后执行?还是别的意思?
要是前者,好吧……这个东西麻烦的可以去自杀……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

穿越一季:朔

梦石
0
星屑
50
在线时间
333 小时
注册时间
2007-4-11
帖子
5369

贵宾

7
 楼主| 发表于 2009-3-28 05:22:34 | 只看该作者
以下引用越前リョーマ于2009-3-27 21:16:03的发言:

最在意的就是触发,
你说的是用坐标判断那个事件然后执行?还是别的意思?
要是前者,好吧……这个东西麻烦的可以去自杀……

坐标判断?

直接2个变量指定一下便可以实现,不过没有镜头效果而已 {/bz}
6R复活?别扯淡了.

柳柳一旦接手66RPG,我果断呵呵啊。
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3304
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

8
发表于 2009-3-28 05:28:12 | 只看该作者
以下引用塑望于2009-3-27 21:22:34的发言:


以下引用越前リョーマ于2009-3-27 21:16:03的发言:

最在意的就是触发,
你说的是用坐标判断那个事件然后执行?还是别的意思?
要是前者,好吧……这个东西麻烦的可以去自杀……


坐标判断?

直接2个变量指定一下便可以实现,不过没有镜头效果而已  

用一个事件脚本执行那个角色前面一格的坐标的事件?
这个事件脚本我倒是找人写过…… = =
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
301
在线时间
573 小时
注册时间
2005-10-27
帖子
1164
9
发表于 2010-7-20 04:43:57 | 只看该作者
看到这个竟然联想到能不能用来做足球之类的游戏……
认真地猥琐,猥琐地认真
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-27 06:14

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表