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

Project1

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

[推荐问答] 冰面怎么做?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
25 小时
注册时间
2013-3-19
帖子
93
跳转到指定楼层
1
发表于 2013-3-20 12:24:56 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

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

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

x
我想做一个冰面,怎么设置?
就是主角在这种地板上,只能向自己面向的方向滑行,直到撞到不能通行的物体或者离开地板才能改变方向,怎么做?
(举个例子:比如宠物小精灵里冰系会馆经常用的那种设置)

评分

参与人数 1星屑 +100 收起 理由
怪蜀黍 + 100 被收录为推荐问答,给予LZ一定奖励。.

查看全部评分

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4699
在线时间
5240 小时
注册时间
2009-4-29
帖子
14318

贵宾

来自 7楼
发表于 2013-3-20 18:42:23 | 只看该作者
本帖最后由 protosssonny 于 2013-3-21 11:04 编辑

教程:http://rpg.blue/thread-300206-1-1.html
范例: 冰面滑行系统.rar (240.74 KB, 下载次数: 81)
截图:
脚本:
RUBY 代码复制
  1. #==============================================================================
  2. # ★ 冰面滑动
  3. #------------------------------------------------------------------------------
  4. # 作者:protosssonny
  5. # 转载请保留脚本来源:[url]www.66RPG.com[/url]
  6. #--------------------------------------------------------------------------
  7. # 请在下面设定冰面图块的ID
  8.   Ice_Tile = [1537,1538,1539]
  9.  
  10. # 可以在事件脚本中输入以下命令来查看当前角色脚下的图块ID,以便确定冰面图块:
  11. #     $game_map.show_tile_id
  12. #==============================================================================
  13.  
  14. #==============================================================================
  15. # ■ Game_Map
  16. #------------------------------------------------------------------------------
  17. #  处理地图的类。包含卷动以及可以通行的判断功能。本类的实例请参考 $game_map 。
  18. #==============================================================================
  19.  
  20. class Game_Map  
  21.   #--------------------------------------------------------------------------
  22.   # ● 判断冰面
  23.   #     x : X 坐标
  24.   #     y : Y 坐标
  25.   #--------------------------------------------------------------------------
  26.   def ice?(x, y)
  27.     return false unless valid?(x, y)
  28.     return true if Ice_Tile.include?($game_map.data[x, y, 0])
  29.   end  
  30.   #--------------------------------------------------------------------------
  31.   # ● 显示当前图块ID (测试用的脚本命令)
  32.   #--------------------------------------------------------------------------
  33.   def show_tile_id
  34.     p $game_map.data[$game_player.x, $game_player.y, 0]
  35.   end  
  36. end  
  37. #==============================================================================
  38. # ■ Game_Player
  39. #------------------------------------------------------------------------------
  40. #  处理主角的类。事件启动的判定、以及地图的滚动等功能。
  41. # 本类的实例请参考 $game_player。
  42. #==============================================================================
  43.  
  44. class Game_Player < Game_Character
  45.   #--------------------------------------------------------------------------
  46.   # ● 更新画面
  47.   #--------------------------------------------------------------------------
  48.   def update
  49.     last_real_x = @real_x
  50.     last_real_y = @real_y
  51.     last_moving = moving?
  52.     if $game_map.ice?(@x, @y) # 在冰上移动
  53.       @walk_anime = false
  54.       move_on_ice
  55.     else
  56.       @walk_anime = true
  57.     end  
  58.     move_by_input
  59.     super
  60.     update_scroll(last_real_x, last_real_y)
  61.     update_vehicle
  62.     update_nonmoving(last_moving)
  63.   end
  64.   #--------------------------------------------------------------------------
  65.   # ● 方向键移动处理
  66.   #--------------------------------------------------------------------------
  67.   def move_on_ice
  68.     return unless movable?
  69.     return if $game_map.interpreter.running?
  70.     return if @move_failed
  71.     case self.direction
  72.     when 2
  73.       move_down
  74.     when 4
  75.       move_left
  76.     when 6
  77.       move_right
  78.     when 8
  79.       move_up
  80.     end
  81.   end
  82. end  
  83.   #--------------------------------------------------------------------------
  84.   # ● 判断是否奔跑中
  85.   #--------------------------------------------------------------------------
  86.   def dash?
  87.     return false if @move_route_forcing
  88.     return false if $game_map.disable_dash?
  89.     return false if in_vehicle?
  90.     return Input.press?(Input::A) unless $game_map.ice?(@x, @y) #加本行即可
  91.   end

点评

P叔,在滑行过程中按下shift的话会加速呢,这不科学  发表于 2013-3-20 18:52

评分

参与人数 1梦石 +1 收起 理由
Luciffer + 1 认可答案

查看全部评分

《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
25 小时
注册时间
2013-3-19
帖子
93
9
 楼主| 发表于 2013-3-20 23:21:37 | 只看该作者
protosssonny 发表于 2013-3-20 18:42
教程:http://rpg.blue/thread-300206-1-1.html
范例:
截图:

突然遇见一个问题  为什么我按住ctrl后 可以无视地形了? 直接从石头上跟滑冰一样就滑过去了 这是为什么啊? 不安ctrl就是该停停 该滑滑 按住ctrl就无视地形的滑了 这什么情况?

点评

哦哦 我还以为出BUG了呢 谢了  发表于 2013-3-21 10:04
这是测试模式。只有你用RPGmaker测试游戏的时候才可以用,正常玩家玩的时候是不可以的。  发表于 2013-3-20 23:31
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
25 小时
注册时间
2013-3-19
帖子
93
8
 楼主| 发表于 2013-3-20 22:42:18 | 只看该作者
protosssonny 发表于 2013-3-20 18:42
教程:http://rpg.blue/thread-300206-1-1.html
范例:
截图:

万分感谢~~~  感激不尽啊  这个问题折磨我一下午了  
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
25 小时
注册时间
2013-3-19
帖子
93
6
 楼主| 发表于 2013-3-20 17:31:13 | 只看该作者
119143201 发表于 2013-3-20 12:51
你 说的因该是跟重装机兵里打大象的那个镇子差不多的意思,人只能在冰面上滑行,遇到障碍物才能停止,
事件 ...

咋个整法?

点评

太山Q了 坐等  发表于 2013-3-20 17:49
我帮你做一个,我自己正好也要用到。你等一下即可。  发表于 2013-3-20 17:33
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
25 小时
注册时间
2013-3-19
帖子
93
5
 楼主| 发表于 2013-3-20 17:09:45 | 只看该作者
0newing 发表于 2013-3-20 12:45
我有个想法,不过貌似很耗也很麻烦……
就是用事件画地板,事件执行内容是主角向前移动,在墙(也就是你想 ...

怎么用事件设置? 表示设置完后 撞墙了 角色没法拐歪了  怎么设置?

点评

在墙的地方用一下条件分歧啊……如果朝向为…………  发表于 2013-3-20 21:36
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
23 小时
注册时间
2013-3-12
帖子
74
4
发表于 2013-3-20 12:51:33 | 只看该作者
你 说的因该是跟重装机兵里打大象的那个镇子差不多的意思,人只能在冰面上滑行,遇到障碍物才能停止,
事件的话太过复杂,冰面大的话,用事件那工程就超大了,容我考虑一下。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
13 小时
注册时间
2013-3-19
帖子
22
3
发表于 2013-3-20 12:50:13 | 只看该作者
在阁下十分熟悉条件分歧的使用的情况下,可以这么实现:
首先需要改动一点点脚本,以实现角色只能往单方向移动
在Game_Player下的309行到312行
  1.    when 2;  move_down
  2.     when 4;  move_left
  3.     when 6;  move_right
  4.     when 8;  move_up
复制代码
改为:
  1.     when 2;  
  2.       if $game_switches[1] == false  #若1号开关打开,无法向下移动,以下同理
  3.         move_down                    #开关的ID由阁下自己决定,不一定非要1-4号ID的开关
  4.       end
  5.     when 4;  
  6.       if $game_switches[2] == false
  7.         move_left
  8.       end
  9.     when 6;  
  10.       if $game_switches[3] == false
  11.         move_right
  12.       end
  13.     when 8;  
  14.       if $game_switches[4] == false
  15.         move_up
  16.       end
复制代码
这样就可以进行冰面移动路线的设置了。
举个例子,假如在某一个位置角色只能向左移动,那么就把1,3,4号开关打开即可。
而其实更多情况,还需对角色的朝向来进行判定。
由于过于麻烦,请阁下自行尝试。

点评

已经修正了,谢谢6道君提出BUG  发表于 2013-3-20 19:17
额。。。。 完全不明白 我只知道现在这个脚本被我弄的 复制了这几行代码后 连游戏都无法运行了  发表于 2013-3-20 17:29
额……滑行应该角色没有步行动画,这个要是也能关闭会更形象些喵~  发表于 2013-3-20 17:21
嗷呜,LZ似乎说滑行,就是什么键也不按也会一直往前走,直到被阻挡才停。这个目测好像只是不能按键移动,但依旧是按一下走一步呢。  发表于 2013-3-20 17:20
我想问一下这段代码怎么用? 我已经复制到脚本里了 但是不知道怎么用额  发表于 2013-3-20 17:14

评分

参与人数 2星屑 +100 收起 理由
Luciffer + 50 我很赞同
怪蜀黍 + 50 辛苦钱喵

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1257
在线时间
423 小时
注册时间
2011-6-30
帖子
497
2
发表于 2013-3-20 12:45:39 | 只看该作者
我有个想法,不过貌似很耗也很麻烦……
就是用事件画地板,事件执行内容是主角向前移动,在墙(也就是你想停下的地方)处执行以下条件分歧……

点评

我试试 没研究明白事件怎么弄的话再问你昂~~ 因为刚接触这个软件第二天 还不是很熟  发表于 2013-3-20 13:03
点这里给我发邮件
有事欢迎给我发邮件哟~~
不出意外的话都会回复的哟~~~
邮箱:[email protected]
个人主页:curatorjin.github.io
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-23 10:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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