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

Project1

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

如何让角色碰到路障就自动饶开?

 关闭 [复制链接]

Lv1.梦旅人

欠扁头像持有者

梦石
0
星屑
114
在线时间
16 小时
注册时间
2005-10-22
帖子
423
跳转到指定楼层
1
发表于 2007-9-3 05:49:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
用纯事件来做的话,好象不大可能。(量太大了!{/gg})
在石焚刃暖中,有这样的效果。我把那个游戏下载了,但还是不知道怎么做,而且不知道为什么,那个游戏老出错。
请教大大们该杂弄?
版务信息:本贴由楼主自主结贴~
水兵土星--死亡之星!

Lv1.梦旅人

欠扁头像持有者

梦石
0
星屑
114
在线时间
16 小时
注册时间
2005-10-22
帖子
423
2
 楼主| 发表于 2007-9-3 05:49:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
用纯事件来做的话,好象不大可能。(量太大了!{/gg})
在石焚刃暖中,有这样的效果。我把那个游戏下载了,但还是不知道怎么做,而且不知道为什么,那个游戏老出错。
请教大大们该杂弄?
版务信息:本贴由楼主自主结贴~
水兵土星--死亡之星!

Lv1.梦旅人

66RPG站长

梦石
0
星屑
54
在线时间
615 小时
注册时间
2005-10-10
帖子
5734

RMVX自由创作大赛亚军第2届短篇游戏比赛亚军第5届短篇游戏比赛冠军

3
发表于 2007-9-5 06:09:55 | 只看该作者
石焚刃暖中没有这个效果,这只是你的错觉。
普通做法就是这样:http://rpg.blue/viewthread.php?tid=39702

或者也有别的方法,比如你用地形标志,这样走路的时候不断判断地形标志决定主角的绕行方法就行了。但是对脚本有一定要求,而且设置起来比较麻烦。

当然也可以制作一个专用工具来设置绕行,不过没什么必要……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

月下可怜人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2005-11-23
帖子
4085

第1届短篇游戏比赛亚军

4
发表于 2007-9-5 12:55:39 | 只看该作者
那个是寻路算法,
附加在鼠标脚本中,
脱离版本有人曾做个使用工程。
http://rpg.blue/web/htm/news566.htm

不过后来作者在某张回帖修改过,主站没有更新。
纵然千里外,我等雁归来。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
2 小时
注册时间
2007-9-4
帖子
251
5
发表于 2007-9-5 16:38:28 | 只看该作者
这个脚本也可以实现绕路功能的
http://rpg.blue/viewthread.php?tid=65895
[fly][/fly]
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
1
星屑
916
在线时间
101 小时
注册时间
2006-3-27
帖子
1081
6
发表于 2007-9-6 00:40:59 | 只看该作者
自动饶开的我记得我写过一个=。=

这里
  1. #==============================================================================
  2. # 使用方法:
  3. # 1.直接插在MAIN前即可使用
  4. # 2.面对事件不进行自动转向
  5. # 3.对于个别需要自动转向的事件,在该事件的第一页第一行写一句注释"not_npc"(不含引号)
  6. #
  7. #------------------------------------------------------------------------------
  8. class Game_Character
  9.   #--------------------------------------------------------------------------
  10.   # ● 可以通行判定
  11.   #     x : X 坐标
  12.   #     y : Y 坐标
  13.   #     d : 方向 (0,2,4,6,8)  ※ 0 = 全方向不能通行的情况判定 (跳跃用)
  14.   #--------------------------------------------------------------------------  
  15.   def passable?(x, y, d)
  16.     #---------------------------
  17.     $isnpc = true
  18.     #---------------------------
  19.     # 求得新的坐标
  20.     new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0)
  21.     new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0)
  22.     # 坐标在地图以外的情况
  23.     unless $game_map.valid?(new_x, new_y)
  24.       # 不能通行
  25.       return false
  26.     end
  27.     # 穿透是 ON 的情况下
  28.     if @through
  29.       # 可以通行
  30.       return true
  31.     end
  32.     # 移动者的元件无法来到指定方向的情况下
  33.     unless $game_map.passable?(x, y, d, self)
  34.       # 通行不可
  35.       return false
  36.     end
  37.     # 从指定方向不能进入到移动处的元件的情况下
  38.     unless $game_map.passable?(new_x, new_y, 10 - d)
  39.       # 不能通行
  40.       return false
  41.     end
  42.     # 循环全部事件
  43.     for event in $game_map.events.values
  44.       # 事件坐标于移动目标坐标一致的情况下
  45.       if event.x == new_x and event.y == new_y
  46.         # 穿透为 ON
  47.         unless event.through
  48.           # 自己就是事件的情况下
  49.           if self != $game_player
  50.             # 不能通行
  51.             #---------------------------
  52.             $isnpc = false if event.list[0].parameters[0] != "not_npc"
  53.             #---------------------------
  54.             return false
  55.           end
  56.           # 自己是主角、对方的图形是角色的情况下
  57.           if event.character_name != ""
  58.             # 不能通行
  59.             #---------------------------
  60.             $isnpc = false if event.list[0].parameters[0] != "not_npc"
  61.             #---------------------------
  62.             return false
  63.           end
  64.         end
  65.       end
  66.     end
  67.     # 主角的坐标与移动目标坐标一致的情况下
  68.     if $game_player.x == new_x and $game_player.y == new_y
  69.       # 穿透为 ON
  70.       unless $game_player.through
  71.         # 自己的图形是角色的情况下
  72.         if @character_name != ""
  73.           # 不能通行
  74.           return false
  75.         end
  76.       end
  77.     end
  78.     # 可以通行
  79.     return true
  80.   end
  81.   
  82.   #--------------------------------------------------------------------------
  83.   # ● 向下移动
  84.   #     turn_enabled : 本场地位置更改许可标志
  85.   #--------------------------------------------------------------------------
  86.   def move_down(turn_enabled = true)
  87.     #---------------------------
  88.     direct = @direction
  89.     #---------------------------
  90.     # 面向下
  91.     if turn_enabled
  92.       turn_down
  93.     end
  94.     # 可以通行的场合
  95.     if passable?(@x, @y, 2)
  96.       # 面向下
  97.       turn_down
  98.       # 更新坐标
  99.       @y += 1
  100.       # 增加步数
  101.       increase_steps
  102.     # 不能通行的情况下
  103.     else
  104.       
  105.      #---------------------------
  106.     if $isnpc
  107.       if passable?(@x, @y, 6) and passable?(@x+1, @y, 2) and passable?(@x, @y, 4) and passable?(@x-1, @y, 2)
  108.         move_left if direct == 4
  109.         move_right if direct == 6
  110.         if direct == 2 or direct == 8
  111.           randtra = rand(2)
  112.           randtra == 0 ? move_left : move_right
  113.         end
  114.       else
  115.         move_left if passable?(@x, @y, 4) and passable?(@x-1, @y, 2)
  116.         move_right if passable?(@x, @y, 6) and passable?(@x+1, @y, 2)
  117.       end
  118.     end
  119.     #---------------------------

  120.       # 接触事件的启动判定
  121.       check_event_trigger_touch(@x, @y+1)
  122.     end
  123.   end
  124.   #--------------------------------------------------------------------------
  125.   # ● 向左移动
  126.   #     turn_enabled : 本场地位置更改许可标志
  127.   #--------------------------------------------------------------------------
  128.   def move_left(turn_enabled = true)
  129.     #---------------------------
  130.     direct = @direction
  131.     #---------------------------
  132.     # 面向左
  133.     if turn_enabled
  134.       turn_left
  135.     end
  136.     # 可以通行的情况下
  137.     if passable?(@x, @y, 4)
  138.       # 面向左
  139.       turn_left
  140.       # 更新坐标
  141.       @x -= 1
  142.       # 增加步数
  143.       increase_steps
  144.     # 不能通行的情况下
  145.     else
  146.       
  147.       #---------------------------
  148.       if $isnpc
  149.       if passable?(@x, @y, 8) and passable?(@x, @y-1, 4) and passable?(@x, @y, 2) and passable?(@x, @y+1, 4)
  150.         move_up if direct == 8
  151.         move_down if direct == 2
  152.         if direct == 4 or direct == 6
  153.           randtra = rand(2)
  154.           randtra == 0 ? move_up : move_down
  155.         end
  156.       else
  157.         move_up if passable?(@x, @y, 8) and passable?(@x, @y-1, 4)
  158.         move_down if passable?(@x, @y, 2) and passable?(@x, @y+1, 4)
  159.       end
  160.       end
  161.       #---------------------------
  162.       
  163.       # 接触事件的启动判定
  164.       check_event_trigger_touch(@x-1, @y)
  165.     end
  166.   end
  167.   #--------------------------------------------------------------------------
  168.   # ● 向右移动
  169.   #     turn_enabled : 本场地位置更改许可标志
  170.   #--------------------------------------------------------------------------
  171.   def move_right(turn_enabled = true)
  172.     #---------------------------
  173.     direct = @direction
  174.     #---------------------------
  175.     # 面向右
  176.     if turn_enabled
  177.       turn_right
  178.     end
  179.     # 可以通行的场合
  180.     if passable?(@x, @y, 6)
  181.       # 面向右
  182.       turn_right
  183.       # 更新坐标
  184.       @x += 1
  185.       # 增加部数
  186.       increase_steps
  187.     # 不能通行的情况下
  188.     else
  189.       #---------------------------
  190.       if $isnpc
  191.       if passable?(@x, @y, 8) and passable?(@x, @y-1, 6) and passable?(@x, @y, 2) and passable?(@x, @y+1, 6)
  192.         move_up if direct == 8
  193.         move_down if direct == 2
  194.         if direct == 4 or direct == 6
  195.           randtra = rand(2)
  196.           randtra == 0 ? move_up : move_down
  197.         end
  198.       else
  199.         move_up if passable?(@x, @y, 8) and passable?(@x, @y-1, 6)
  200.         move_down if passable?(@x, @y, 2) and passable?(@x, @y+1, 6)
  201.       end
  202.       end
  203.       #---------------------------
  204.       # 接触事件的启动判定
  205.       check_event_trigger_touch(@x+1, @y)
  206.     end
  207.   end
  208.   #--------------------------------------------------------------------------
  209.   # ● 向上移动
  210.   #     turn_enabled : 本场地位置更改许可标志
  211.   #--------------------------------------------------------------------------
  212.   def move_up(turn_enabled = true)
  213.     #---------------------------
  214.     direct = @direction
  215.     #---------------------------
  216.     # 面向上
  217.     if turn_enabled
  218.       turn_up
  219.     end
  220.     # 可以通行的情况下
  221.     if passable?(@x, @y, 8)
  222.       # 面向上
  223.       turn_up
  224.       # 更新坐标
  225.       @y -= 1
  226.       # 歩数増加
  227.       increase_steps
  228.     # 不能通行的情况下
  229.     else
  230.       #---------------------------
  231.       if $isnpc
  232.       if passable?(@x, @y, 6) and passable?(@x+1, @y, 8) and passable?(@x, @y, 4) and passable?(@x-1, @y, 8)
  233.         move_left if direct == 4
  234.         move_right if direct == 6
  235.         if direct == 2 or direct == 8
  236.           randtra = rand(2)
  237.           randtra == 0 ? move_left : move_right
  238.         end
  239.       else
  240.         move_left if passable?(@x, @y, 4) and passable?(@x-1, @y, 8)
  241.         move_right if passable?(@x, @y, 6) and passable?(@x+1, @y, 8)
  242.       end
  243.       end
  244.       #---------------------------
  245.       # 接触事件的启动判定
  246.       check_event_trigger_touch(@x, @y-1)
  247.     end
  248.   end
  249. end
复制代码

系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-6-22 22:10

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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