Project1

标题: RMXP用寻路脚本(使NPC接近主角) [打印本页]

作者: lianran123456    时间: 2015-2-15 20:43
标题: RMXP用寻路脚本(使NPC接近主角)
本帖最后由 lianran123456 于 2015-2-16 09:45 编辑

众所周知默认的NPC寻路能力有待提高,经常被一点小障碍给卡住。
我需要一个能使NPC绕开障碍接近主角的寻路脚本。
只要不引起卡顿或者是可以感知的掉帧就行。
理想情况(移动设置直接点上接近就能用):https://rpg.blue/forum.php?mod=viewthread&tid=369852
是RMXP用的
@余烬之中
@RyanBern
@myownroc
三位曾经发布过寻路系统的大大有没有兴趣帮我一下,感激不尽。
作者: Wind2010    时间: 2015-2-15 20:43
本帖最后由 Wind2010 于 2015-2-16 23:31 编辑
lianran123456 发表于 2015-2-16 17:01
可是我按照他所说的
    astr = AStar.new($game_map)
    astr.set_origin($game_player.x, $game_playe ...


set_origin里的是起始点,set_target才是终点,应该写成:
  1.     astr = AStar.new($game_map)
  2.     astr.set_origin($game_map.events[@event_id].x,$game_map.events[@event_id].y)
  3.     astr.set_target($game_player.x,$game_player.y)
  4.     path = astr.do_search
复制代码
然后后面调用句$game_map.events[@event_id].move_dr(path[0])
关于move_dr的定义:
  1. class Game_Character
  2.   def move_dr(dr)
  3.     case dr
  4.     when 1
  5.       move_lower_left
  6.     when 2
  7.       move_down
  8.     when 3
  9.       move_lower_right
  10.     when 4
  11.       move_left
  12.     when 6
  13.       move_right
  14.     when 7
  15.       move_upper_left
  16.     when 8
  17.       move_up
  18.     when 9
  19.       move_upper_right
  20.     else
  21.       move_toward_game_player
  22.     end
  23.   end
  24. end
复制代码


随便做了个范例,参考下吧

Project3.rar

188.99 KB, 下载次数: 124


作者: myownroc    时间: 2015-2-16 11:19
接近?如果NPC和主角已经贴在一起了怎么办?
作者: taroxd    时间: 2015-2-16 15:56
本帖最后由 taroxd 于 2015-2-16 16:36 编辑

寻路这东西基本上都是通用的
发个我自己用的吧:https://rpg.blue/thread-228259-1-1.html

贴出来了

作者: lianran123456    时间: 2015-2-16 17:01
taroxd 发表于 2015-2-16 15:56
寻路这东西基本上都是通用的
发个我自己用的吧:https://rpg.blue/thread-228259-1-1.html

可是我按照他所说的
    astr = AStar.new($game_map)
    astr.set_origin($game_player.x, $game_player.y)
    astr.set_target(0, 0)
    path = astr.do_search
什么都没有发生




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