查看: 5378|回复: 11

[已经解决] VX中如何让NPC拥有视野?

[复制链接]
梦石
0
星屑
1261
在线时间
423 小时
注册时间
2011-6-30
回帖
470
发表于 2012-6-20 18:57:22 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 0newing 于 2012-11-15 17:47 编辑

玩过一个叫《萝莉的远征:幽灵行动》的游戏,想知道怎么做出这种效果,见图:
未命名.png
就是NPC可以有视野,看见主角行动加快,或者实行其他的动作。
请指导,谢谢……
点这里给我发邮件
有事欢迎给我发邮件哟~~
不出意外的话都会回复的哟~~~
邮箱:disciple_sneaker@163.com
个人主页:curatorjin.github.io

八宝粥的基叔

梦石
0
星屑
4957
在线时间
5234 小时
注册时间
2009-4-29
回帖
14054

贵宾

发表于 2012-6-21 20:27:19 | 显示全部楼层
未命名.PNG

评分

参与人数 1星屑 +240 收起 理由
Luciffer + 240 认可答案

查看全部评分

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

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

使用道具 举报

梦石
0
星屑
2306
在线时间
1010 小时
注册时间
2012-4-30
回帖
1455

开拓者

发表于 2012-6-21 20:32:49 | 显示全部楼层
本帖最后由 铅笔描绘的思念 于 2012-6-21 20:35 编辑

完全可以用事件做到
先把1号变量代入主角的X坐标
先把2号变量代入主角的Y坐标
先把3号变量代入事件的X坐标
先把4号变量代入事件的Y坐标
在条件分歧 如果3号变量等于大于1号变量
  则 5号 变量代入  脚本 $game_variables[3]- $game_variables[1]
否则 5号 变量代入  脚本 $game_variables[1]- $game_variables[3]
结束

条件分歧 如果4号变量等于大于2号变量
  则 6号 变量代入  脚本 $game_variables[4]- $game_variables[2]
否则 6号 变量代入  脚本 $game_variables[2]- $game_variables[4]
结束

再条件分歧 如果 5号 变量 小于等于  2 时 (2的话那么事件的X轴视野就是2)
   条件分歧 如果 6号 变量 小于等于  2 时 (2的话那么事件的Y轴视野就是2)
  #这里就是实现的效果。。显示心情啊什么的。。。
  #如果要追踪主角的话那应该要打开独立开关A啊什么的。。。
  #设置事件二 条件是独立开关A打开  移动类型是接近 触发条件是与事件接触  在战斗啊什么的。。。
  #还要 条件分歧
  #当变量5大于2且变量6大于2时  独立开关A关闭  
结束
结束




附上脚本版
[pre lang="ruby" line="1"]#==============================================================================
#-------------------------怪物追跡-------------------------------------------------------

#------------------http://blog.sina.com.cn/rpgs---- ... -------------------

#使用方法,在事件的名称上加enemy
#在运动规则 类型——随机
#            速度——自己选(别太快,别高过反应后的速度)
#            频率——最高
#与事件接触
#然后在内容加个战斗就OK了
#不知道怎么用的可以跟我拿范例
#animation_id =怪物反应动画 57,82行
#move_speed =怪物反应后的速度 1为最低,5为最高
#名字可以自己改在53,54行。
#============================================================================
# ■ Game_Character
#==============================================================================
class Game_Character
  #--------------------------------------------------------------------------
  # ● 更新
  #--------------------------------------------------------------------------
  alias update_n03 update
  def update
    update_n03
    seek_player
  end
  #--------------------------------------------------------------------------
  # ●用追跡判定
  #--------------------------------------------------------------------------
  def distance_player
    return false if (@x - $game_player.x).abs > 3
    return false if (@y - $game_player.y).abs > 3
    return true
  end
  #--------------------------------------------------------------------------
  # ●用追跡判定
  #--------------------------------------------------------------------------
  def distance_player2
    return true if (@y - $game_player.y) == 0
    return false
  end
  #--------------------------------------------------------------------------
  # ● 用追跡判定
  #--------------------------------------------------------------------------
  def sight_out
    return false if (@x - $game_player.x).abs < 5
    return false if (@y - $game_player.y).abs < 5
    return true
  end
  #--------------------------------------------------------------------------
  # ● 用追跡判定
  #--------------------------------------------------------------------------
  def seek_player
    return if @event == nil
    return special_seek if @event.name == "enemy2"
    return if @event.name != "enemy"
    return if @transparent
    if !@seeking && distance_player
      @animation_id = 93
      @remain = [@move_type, @move_speed]
      @seeking = true
      @move_type = 2
      @move_speed = 3
    elsif @seeking && sight_out
      @seeking = false
      if @remain != nil
        @move_type = @remain[0]
        @move_speed = @remain[1]
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 特殊追跡
  #--------------------------------------------------------------------------
  def special_seek
    if !@seeking && distance_player2
      @animation_id = 93
      @remain = [@move_type, @move_speed]
      @seeking = true
      @move_type = 2
      @move_speed = 4
    end
  end

end
[/pre]

评分

参与人数 1梦石 +1 收起 理由
Luciffer + 1 翻到一个老帖子啊

查看全部评分

回复

使用道具 举报

梦石
0
星屑
1261
在线时间
423 小时
注册时间
2011-6-30
回帖
470
 楼主| 发表于 2012-6-21 20:43:53 | 显示全部楼层
铅笔描绘的思念 发表于 2012-6-21 20:32
完全可以用事件做到
先把1号变量代入主角的X坐标
先把2号变量代入主角的Y坐标

还是贴个范例吧,我不太明白{:2_257:}
点这里给我发邮件
有事欢迎给我发邮件哟~~
不出意外的话都会回复的哟~~~
邮箱:disciple_sneaker@163.com
个人主页:curatorjin.github.io
回复

使用道具 举报

梦石
0
星屑
1261
在线时间
423 小时
注册时间
2011-6-30
回帖
470
 楼主| 发表于 2012-6-21 20:47:26 | 显示全部楼层
protosssonny 发表于 2012-6-21 20:27

第二和第三页写什么啊?
点这里给我发邮件
有事欢迎给我发邮件哟~~
不出意外的话都会回复的哟~~~
邮箱:disciple_sneaker@163.com
个人主页:curatorjin.github.io
回复

使用道具 举报

八宝粥的基叔

梦石
0
星屑
4957
在线时间
5234 小时
注册时间
2009-4-29
回帖
14054

贵宾

发表于 2012-6-21 20:52:17 | 显示全部楼层
本帖最后由 protosssonny 于 2012-6-21 20:53 编辑
0newing 发表于 2012-6-21 20:47
第二和第三页写什么啊?


第2页就写敌人的反应:执行条件为“独立开关A为ON”,移动类型为“接近”,事件执行条件为“与主角接触”,然后就是战斗什么的,自己设置即可,战斗结束后,独立开关B为ON。
第3页执行条件为“独立开关B为ON”,事件页留空白。表明战斗结束后,NPC消失。
《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

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

使用道具 举报

梦石
0
星屑
1261
在线时间
423 小时
注册时间
2011-6-30
回帖
470
 楼主| 发表于 2012-6-21 21:19:41 | 显示全部楼层
protosssonny 发表于 2012-6-21 20:52
第2页就写敌人的反应:执行条件为“独立开关A为ON”,移动类型为“接近”,事件执行条件为“与主角接触” ...

追到看不见的时候还要恢复到原来的事件页,这一点没有似乎考虑到吧?
点这里给我发邮件
有事欢迎给我发邮件哟~~
不出意外的话都会回复的哟~~~
邮箱:disciple_sneaker@163.com
个人主页:curatorjin.github.io
回复

使用道具 举报

八宝粥的基叔

梦石
0
星屑
4957
在线时间
5234 小时
注册时间
2009-4-29
回帖
14054

贵宾

发表于 2012-6-21 21:30:06 | 显示全部楼层
0newing 发表于 2012-6-21 21:19
追到看不见的时候还要恢复到原来的事件页,这一点没有似乎考虑到吧?

那你第2页不是加一个并行处理,像第一页那样设置坐标,大于多少时“独立开关A OFF”就可以了。
《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

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

使用道具 举报

梦石
0
星屑
1261
在线时间
423 小时
注册时间
2011-6-30
回帖
470
 楼主| 发表于 2012-6-21 21:39:48 | 显示全部楼层
protosssonny 发表于 2012-6-21 21:30
那你第2页不是加一个并行处理,像第一页那样设置坐标,大于多少时“独立开关A OFF”就可以了。 ...

问题是同时,追到了还要执行事件的啊。这两样要兼有

点评

我最后提示一点,“接触”也可以理解为两者坐标之差为0。要是还解决不了,那么只能说明你不愿思考了。  发表于 2012-6-22 09:51
我认为我已经说得很清楚了,包括你现在这个问题也已经解决了。看不懂就是你的问题了。  发表于 2012-6-22 09:44
点这里给我发邮件
有事欢迎给我发邮件哟~~
不出意外的话都会回复的哟~~~
邮箱:disciple_sneaker@163.com
个人主页:curatorjin.github.io
回复

使用道具 举报

梦石
0
星屑
1261
在线时间
423 小时
注册时间
2011-6-30
回帖
470
 楼主| 发表于 2012-11-14 23:10:01 | 显示全部楼层
本帖最后由 0newing 于 2012-11-14 23:16 编辑

到了我完成了,结帖~~    发上来给大家看看吧,差点就忘了,发的晚了点,见谅,见谅~~
抓人的话,事件与角色的坐标不会相等(除非穿透 = on)
要同时显示心情,还要判断追逐过程是否被逃脱,以及追上时执行事件,引用一个公共事件应该能完成吧?
感谢铅笔描绘的思念提供的脚本,加上了显示心情(画蛇添足)……

Project2.zip

360.7 KB, 下载次数: 87

点评

挖坟了,喵!新人注意看版规呀,喵!  发表于 2012-11-15 14:11

评分

参与人数 1星屑 -10 收起 理由
Luciffer -10 自己的帖子也不好挖坟哦~

查看全部评分

点这里给我发邮件
有事欢迎给我发邮件哟~~
不出意外的话都会回复的哟~~~
邮箱:disciple_sneaker@163.com
个人主页:curatorjin.github.io
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部