Project1

标题: 怎么做冰面的滑行效果呢? [打印本页]

作者: Tabris_Air    时间: 2009-7-18 10:36
标题: 怎么做冰面的滑行效果呢?
在冰迷宫里,一旦角色踩到冰面上就只能一直前进,直到碰到障碍(石头或者墙壁)才能停下来
这样要怎么实现呢……
是不是应该用地形标志啥的?
作者: IamI    时间: 2009-7-18 10:51
我想说,这个用不可见的事件铺路不久行了吗= =
难道迷宫很大?
作者: Tabris_Air    时间: 2009-7-18 10:52
嗯挺大的,我想复刻口袋妖怪里的冰之通路,玩过的应该都知道很大= =
作者: IamI    时间: 2009-7-18 11:05
随便弄了一个,没考虑太多情况
使用说明:既然你要地形标志,那我就地形标志吧 = =地形标志7被征用
对于事件、主角都有效。如果认为只对主角有效,把第一行改成class Game_Player
  1. class Game_Character
  2.   def move_down(turn_enabled = true)
  3.     # 面向下
  4.     if turn_enabled
  5.       turn_down
  6.     end
  7.     # 可以通行的场合
  8.     if passable?(@x, @y, 2)
  9.       # 面向下
  10.       turn_down
  11.       # 更新坐标
  12.       @y += 1
  13.       # 增加步数
  14.       increase_steps
  15.       if $game_map.terrain_tag(@x,@y+1) == 7
  16.         move_down(turn_enabled)
  17.       end
  18.     # 不能通行的情况下
  19.     else
  20.       # 接触事件的启动判定
  21.       check_event_trigger_touch(@x, @y+1)
  22.     end
  23.   end
  24.   def move_left(turn_enabled = true)
  25.     # 面向左
  26.     if turn_enabled
  27.       turn_left
  28.     end
  29.     # 可以通行的情况下
  30.     if passable?(@x, @y, 4)
  31.       # 面向左
  32.       turn_left
  33.       # 更新坐标
  34.       @x -= 1
  35.       # 增加步数
  36.       increase_steps
  37.       if $game_map.terrain_tag(@x-1,@y) == 7
  38.         move_left(turn_enabled)
  39.       end
  40.     # 不能通行的情况下
  41.     else
  42.       # 接触事件的启动判定
  43.       check_event_trigger_touch(@x-1, @y)
  44.     end
  45.   end
  46.   def move_right(turn_enabled = true)
  47.     # 面向右
  48.     if turn_enabled
  49.       turn_right
  50.     end
  51.     # 可以通行的场合
  52.     if passable?(@x, @y, 6)
  53.       # 面向右
  54.       turn_right
  55.       # 更新坐标
  56.       @x += 1
  57.       # 增加步数
  58.       increase_steps
  59.       if $game_map.terrain_tag(@x+1,@y) == 7
  60.         move_right(turn_enabled)
  61.       end
  62.     # 不能通行的情况下
  63.     else
  64.       # 接触事件的启动判定
  65.       check_event_trigger_touch(@x+1, @y)
  66.     end
  67.   end
  68.   def move_up(turn_enabled = true)
  69.     # 面向上
  70.     if turn_enabled
  71.       turn_up
  72.     end
  73.     # 可以通行的情况下
  74.     if passable?(@x, @y, 8)
  75.       # 面向上
  76.       turn_up
  77.       # 更新坐标
  78.       @y -= 1
  79.       # 歩数増加
  80.       increase_steps
  81.       if $game_map.terrain_tag(@x,@y-1) == 7
  82.         move_up(turn_enabled)
  83.       end
  84.     # 不能通行的情况下
  85.     else
  86.       # 接触事件的启动判定
  87.       check_event_trigger_touch(@x, @y-1)
  88.     end
  89.   end
  90. end
复制代码

作者: 悠悠炸弹    时间: 2009-7-18 13:22
早知道有这种方法就不用公共事件了.......
一个小小的30X20的地图里出现了多达113个事件...(仔细数过...)
谢谢LS的了.
作者: 我不宅    时间: 2009-7-18 16:12
嗯挺大的,我想复刻口袋妖怪里的冰之通路,玩过的应该都知道很大= =
Tabris_Air 发表于 2009-7-18 10:52

又是竞争对手..............
作者: 黑之翅膀    时间: 2009-9-12 12:00
我可以做,一个事件搞定!我在做呢!




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1