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

Project1

 找回密码
 注册会员
搜索

【疑问】怎么实现“被npc看见就游戏结束”事件?

查看数: 3078 | 评论数: 5 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2017-10-30 00:53

正文摘要:

本帖最后由 Kim_Shyuen 于 2017-12-16 18:54 编辑 — 问题已解决 — 如题 →npc会随机移动,若是玩家被npc看见就会game over →玩家可以躲在特定物体后以不被npc看见 请问各位大大,这样的事件要怎么实行呢 ...

回复

芯☆淡茹水 发表于 2017-11-6 13:00:32
RUBY 代码复制
  1. #==============================================================================
  2. module X☆R
  3.   def self.saw(map_id,evevt_id)
  4.     return false if $game_map.map_id != map_id
  5.     return false if $game_map.event(evevt_id).nil?
  6.     return false if $game_map.event(evevt_id).character_name == ""
  7.     return false if $game_map.event(evevt_id).transparent
  8.     return false if !self.facing_player($game_map.event(evevt_id))
  9.     return false if self.has_screen($game_map.event(evevt_id))
  10.     return true
  11.   end
  12.   def self.has_screen(event)
  13.     if event.x == $game_player.x
  14.       (event.y..$game_player.y).each do |y|
  15.         return true if $game_map.terrain_tag(event.x, y) == 5
  16.       end
  17.     end
  18.     if event.y == $game_player.y
  19.       (event.x..$game_player.x).each do |x|
  20.         return true if $game_map.terrain_tag(x, event.y) == 5
  21.       end
  22.     end
  23.     return false
  24.   end
  25.   def self.facing_player(event)
  26.     if event.x == $game_player.x
  27.       return event.y > $game_player.y ? event.direction == 8 : event.direction == 2
  28.     elsif event.y == $game_player.y
  29.       return event.x > $game_player.x ? event.direction == 4 : event.direction == 6
  30.     end
  31.     return false
  32.   end
  33. end
  34. #==============================================================================
  35. class Game_Map
  36.   def event(evevt_id)
  37.     return @events[evevt_id]
  38.   end
  39. end
  40. #==============================================================================


用法是 事件->条件:脚本:X☆R.saw(map_id,evevt_id)
map_id  是会‘看死人’的事件所在的地图ID;
evevt_id 是会‘看死人’的事件ID;


事件用并行,遮挡物的地图图块标志是 5。
Kim_Shyuen 发表于 2017-11-6 11:24:53
芯☆淡茹水 发表于 2017-10-30 08:22
嘛~,没有详细的说明。
地图事件有多种,能够“看死”玩家的NPC是否需要标注一下?
是否有距离限制?

请问那个直接判断npc是否一条直线并且面向玩家该怎么实现呢?
芯☆淡茹水 发表于 2017-10-30 08:22:24
嘛~,没有详细的说明。
地图事件有多种,能够“看死”玩家的NPC是否需要标注一下?
是否有距离限制?
判断看见与否不难,直接判断NPC与玩家是否一条直线并且面向玩家。
至于 可遮挡 的障碍物,可以用 地形标志 识别。

点评

没有距离限制_(:з」∠)_  发表于 2017-11-6 11:34
张咚咚 发表于 2017-10-30 02:12:24

点评

谢谢!  发表于 2017-10-30 11:59
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2025-7-22 04:03

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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