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

Project1

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

[已经解决] RMXP用寻路脚本(使NPC接近主角)

[复制链接]

Lv4.逐梦者

梦石
10
星屑
319
在线时间
1406 小时
注册时间
2010-12-8
帖子
2805

贵宾

跳转到指定楼层
1
发表于 2015-2-15 20:43:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
25星屑
本帖最后由 lianran123456 于 2015-2-16 09:45 编辑

众所周知默认的NPC寻路能力有待提高,经常被一点小障碍给卡住。
我需要一个能使NPC绕开障碍接近主角的寻路脚本。
只要不引起卡顿或者是可以感知的掉帧就行。
理想情况(移动设置直接点上接近就能用):https://rpg.blue/forum.php?mod=viewthread&tid=369852
是RMXP用的
@余烬之中
@RyanBern
@myownroc
三位曾经发布过寻路系统的大大有没有兴趣帮我一下,感激不尽。

最佳答案

查看完整内容

set_origin里的是起始点,set_target才是终点,应该写成:然后后面调用句$game_map.events[@event_id].move_dr(path[0]) 关于move_dr的定义:[hr] 随便做了个范例,参考下吧

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
2
发表于 2015-2-15 20:43:04 | 只看该作者
本帖最后由 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

点评

请问$game_map.events[@id].move_dr(path[0])是加在path = astr.do_search后面下一行吗?  发表于 2015-2-16 22:48
"关于move_dr的定义"这一段应该放在哪里?  发表于 2015-2-16 22:47

评分

参与人数 1星屑 +66 收起 理由
lianran123456 + 66 感激不尽!

查看全部评分


http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2744
在线时间
2630 小时
注册时间
2013-1-16
帖子
5657

贵宾

3
发表于 2015-2-16 11:19:56 | 只看该作者
接近?如果NPC和主角已经贴在一起了怎么办?

点评

就像RM默认那样啊= =继续贴着........(我的游戏里设置与事件接触后主角会随机移动一步远离事件...)  发表于 2015-2-16 11:45
(Created by @喵kano)


施工现场:hotege.github.io
回复

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2207
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

4
发表于 2015-2-16 15:56:12 | 只看该作者
本帖最后由 taroxd 于 2015-2-16 16:36 编辑

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

贴出来了

点评

不,他这个是完全通用的,移动啥都行。用法写在注释里了  发表于 2015-2-16 16:52
用不了- -什么反应也没有.....另外他的这个好像是移动主角的吧。。  发表于 2015-2-16 16:45
那个复制不了......你能不能帮忙贴一下= =  发表于 2015-2-16 16:20
一直都有。。。  发表于 2015-2-16 16:18
我靠(╯‵□′)╯︵┻━┻...................论坛什么时候插脚本有滚动条了.................................................我一直以为那个不全....  发表于 2015-2-16 16:15
回复

使用道具 举报

Lv4.逐梦者

梦石
10
星屑
319
在线时间
1406 小时
注册时间
2010-12-8
帖子
2805

贵宾

5
 楼主| 发表于 2015-2-16 17:01:41 | 只看该作者
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
什么都没有发生

点评

①move_dr随便开个新脚本插入就行。②:是跟在后面的  发表于 2015-2-16 22:54
(╯‵□′)╯︵┻━┻  发表于 2015-2-16 19:32
如果我知道,早就告诉你了= = XP 脚本没试过  发表于 2015-2-16 18:37
脚本渣表示看不懂QAQ直接告诉我path哪一行该怎么用吧  发表于 2015-2-16 18:31
path 是路线的数组,元素为 2,4,6,8.照着方向走就是了  发表于 2015-2-16 17:09
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-2 13:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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