Project1

标题: 关于主角坐标问题 [打印本页]

作者: 9244579    时间: 2008-3-17 20:33
标题: 关于主角坐标问题
我想知道这样的算法
          ■■■
          ■□■
          ■■■
主角是□ ■是范围
怎么可以一下算出当敌人在这个■内的时候
就干什么干什么
要不很麻烦还要一个一个去算过去!

以主角为中心然后计算出一格范围的正方形范围..甚至N格 [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: wy29    时间: 2008-3-17 22:35
提示: 作者被禁止或删除 内容自动屏蔽
作者: 9244579    时间: 2008-3-18 00:34
老实的说不是很理解.(愚)
         ■■■
         ■□■
         ■■■
只要能计算出主角8个方向外的N格情况就可以了.
现在教我计算出
以主角为中心向八个方向外各放出一格
敌人在这八格任何一格内的情况下
我最愚蠢的算法
if $game_player.x == $game_map.events[event.id] .x - 1 and
$game_player.y == $game_map.events[event.id] .y
do_sth
end
if $game_player.x == $game_map.events[event.id] .x + 1 and
$game_player.y == $game_map.events[event.id] .y
do_sth
end
if $game_player.x == $game_map.events[event.id] .x and
$game_player.y == $game_map.events[event.id] .y - 1
do_sth
end
if $game_player.x == $game_map.events[event.id] .x and
$game_player.y == $game_map.events[event.id] .y + 1
do_sth
end
以次类推算出斜方向的
if $game_player.x == $game_map.events[event.id] .x + 1 and
$game_player.y == $game_map.events[event.id] .y + 1
do_sth
end
以下差不多
只是麻烦死!!!!!!!!!

作者: 沉影不器    时间: 2008-3-18 00:43
提示: 作者被禁止或删除 内容自动屏蔽
作者: 9244579    时间: 2008-3-18 00:46
    for event in $game_map.events.values
   if sqrt(($game_player.x - $game_map.events[event.id].x)^2 + ($game_player.y - $game_map.events[event.id].y)^2 )
    a = 1
    p a
    end
    end
这样写是
if sqrt(($game_player.x - $game_map.events[event.id].x)^2 + ($game_player.y - $game_map.events[event.id].y)^2 )
这句错了
作者: 9244579    时间: 2008-3-18 00:50
貌似不行
作者: 沉影不器    时间: 2008-3-18 03:48
提示: 作者被禁止或删除 内容自动屏蔽
作者: 9244579    时间: 2008-3-18 20:34
在向外扩张一格呢?
作者: wy29    时间: 2008-3-18 21:38
提示: 作者被禁止或删除 内容自动屏蔽
作者: 水迭澜    时间: 2008-3-19 00:36
if ($game_player.x - $game_map.events[event.id] .x).abs <= 1 or
($game_player.y - $game_map.events[event.id] .y).abs <= 1
do_sth
end

为什么不这么写…………………………orz……
其实就是判断X或者Y坐标和角色相差1格子嘛~
要严格一点按格子来的话就用不着开方什么的了=v=|||




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