Project1

标题: 如何判定以玩家坐标为中心,一定范围内某区域的数量? [打印本页]

作者: 888000    时间: 2015-2-3 19:02
标题: 如何判定以玩家坐标为中心,一定范围内某区域的数量?

图中黑点距离为1,橙红点距离为2.

我想把以玩家坐标为中心,一定范围内,所含有某区域的数量代入变量进行判定再达成如下目的……

7号区域,当以玩家为中心,距离1以内(包括1),7号区域数量不为0时,才能使用打水or钓鱼等等操作。

9号区域,当以玩家为中心,距离2以内(包括2),9号区域数量不为0时,每30(-2×范围内区域9的数量)帧恢复1mp,

10号区域,当玩家与最近的一个10号距离为0时 ,立即打开一个开关。开关开启时减慢玩家在地图上的移动速度,并判定玩家距离2以内的区域10数量,每当玩家移动一步时,损失相当于(1.5%×范围内区域10数量)的当前生命值。但若没有10号区域与玩家距离为0 ,开关关闭。


qwq主要还是怎么把以玩家坐标为中心,一定范围内,所含有某区域的数量代入变量的啦……

(对不起我语死早如果有表意不清的地方请指出来……
作者: taroxd    时间: 2015-2-3 19:13
本帖最后由 taroxd 于 2015-2-3 19:15 编辑

思路是这样,未测试

RUBY 代码复制
  1. class Game_Interpreter
  2.   def region_count(region_id, distance)
  3.     x = $game_player.x
  4.     y = $game_player.y
  5.     (-distance..distance).inject(0) do |result, dx|
  6.       dy_max = distance - dx.abs
  7.       (-dy_max..dy_max).count { |dy|
  8.          $game_map.region_id(x + dx, y + dy) == region_id
  9.       } + result
  10.     end
  11.   end
  12. end


在 变量操作 - 脚本 中输入 region_count(区域ID, 距离) 即可获取
再说一遍,未测试- - 结果不对不要怪我- -




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