Project1

标题: 关于修改攻击范围~ [打印本页]

作者: qiduohua01    时间: 2013-3-30 21:11
标题: 关于修改攻击范围~
#==============================================================================
# ■ ARPG_Bullet
#------------------------------------------------------------------------------
#  处理ARPG中范围攻击的东西`-____-``用了超级烂的方法。
# 例如  陨石,3,false,25   
# 这样就是陨石这个技能```范围编号是3 不需要分歧方向 延迟为25
# 改動了攻擊判定的範圍,加大許多,變的更好打中
#==============================================================================
class ARPG_Rangs
  attr_accessor :rangs
  def initialize(obj, type)
    @rangs = []
    get_rang(obj,type)
  end
  def get_rang(obj,type)
    x = obj.x
    y = obj.y
    d = obj.direction
    # 技能的范围种类就是这里````0为前后一格..1为上下左右```汗``-___-`||
    case type
    # 前后一格
    when 0
     if d == 2
        @rangs =  [[x,y+1],[x,y-1]]
    end
      if d == 4
        @rangs =  [[x-1,y],[x+1,y]]
      end
      if d == 6
        @rangs =  [[x+1,y],[x-1,y]]
      end
      if d == 8
        @rangs =  [[x,y-1],[x,y+1]]
      end
    # 上下左右
    when 1
      @rangs =  [[x,y+1],[x,y-1],[x+1,y],[x-1,y]]
     #直线8格(魔神斩用)
    when 5
      if d == 2
        @rangs =  [[x,y+1],[x,y+2],[x,y+3],[x,y+4],[x,y+5],[x,y+6],[x,y+7],[x,y+8],[x+1,y+1],[x-1,y+1],[x+1,y+2],[x-1,y+2],[x+1,y+3],[x-1,y+3],[x+1,y+4],[x-1,y+4],[x+1,y+5],[x-1,y+5],[x+1,y+6],[x-1,y+6],]
      end
      if d == 4
        @rangs =  [[x-1,y],[x-2,y],[x-3,y],[x-4,y],[x-5,y],[x-6,y],[x-7,y],[x-8,y],[x-1,y+1],[x-1,y-1],[x-2,y+1],[x-2,y-1],[x-3,y+1],[x-3,y-1],[x-4,y+1],[x-4,y-1],[x-5,y+1],[x-5,y-1],[x-6,y+1],[x-6,y-1],]
      end
      if d == 6
        @rangs =  [[x+1,y],[x+2,y],[x+3,y],[x+4,y],[x+5,y],[x+6,y],[x+7,y],[x+8,y],[x+1,y+1],[x+1,y-1],[x+2,y+1],[x+2,y-1],[x+3,y+1],[x+3,y-1],[x+4,y+1],[x+4,y-1],[x+5,y+1],[x+5,y-1],[x+6,y+1],[x+6,y-1],]
      end
      if d == 8
        @rangs =  [[x,y-1],[x,y-2],[x,y-3],[x,y-4],[x,y-5],[x,y-6],[x,y-7],[x,y-8],[x+1,y-1],[x-1,y-1],[x+1,y-2],[x-1,y-2],[x+1,y-3],[x-1,y-3],[x+1,y-4],[x-1,y-4],[x+1,y-5],[x-1,y-5],[x+1,y-6],[x-1,y-6],]
      end
   
                  
   
    # 直线10格(激光用)
    when 6
      if d == 2
        @rangs =  [[x,y+1],[x,y+2],[x,y+3],[x,y+4],[x,y+5],[x,y+6],[x,y+7],[x,y+8],[x,y+9],[x,y+10],[x,y+11]]
      end
      if d == 4
        @rangs =  [[x-1,y],[x-2,y],[x-3,y],[x-4,y],[x-5,y],[x-6,y],[x-7,y],[x-8,y],[x-9,y],[x-10,y],[x-11,y]]
      end
      if d == 6
        @rangs =  [[x+1,y],[x+2,y],[x+3,y],[x+4,y],[x+5,y],[x+6,y],[x+7,y],[x+8,y],[x+9,y],[x+10,y],[x+11,y]]
      end
      if d == 8
        @rangs =  [[x,y-1],[x,y-2],[x,y-3],[x,y-4],[x,y-5],[x,y-6],[x,y-7],[x,y-8],[x,y-9],[x,y-10],[x,y-11]]
      end
    # 直线2格(枪用)
    when 2
      if d == 2
        @rangs =  [[x,y+1],[x,y+2]]
      end
      if d == 4
        @rangs =  [[x-1,y],[x-2,y]]
      end
      if d == 6
        @rangs =  [[x+1,y],[x+2,y]]
      end
      if d == 8
        @rangs =  [[x,y-1],[x,y-2]]
      end
      # 面向的3个敌人
    when 4
      case d
      when 2
        @rangs = [[x-1,y+1],[x,y+1],[x+1,y+1],[x-1,y+2],[x,y+2],[x+1,y+2],[x+1,y],[x-1,y]]
      when 4
        @rangs = [[x-1,y-1],[x-1,y],[x-1,y+1],[x-2,y-1],[x-2,y],[x-2,y+1],[x,y+1],[x,y-1]]
      when 6
        @rangs = [[x+1,y+1],[x+1,y],[x+1,y-1],[x+2,y+1],[x+2,y],[x+2,y-1],[x,y+1],[x,y-1]]
      when 8
        @rangs = [[x-1,y-1],[x,y-1],[x+1,y-1],[x-1,y-2],[x,y-2],[x+1,y-2],[x+1,y],[x-1,y]]
       when 1
        @rangs = [[x+1,y+1],[x+1,y+2],[x-1,y-1],[x-1,y+1],[x-1,y+2],[x-2,y+1],[x-2,y-1],[x-2,y-2],[x,y]]
         when 3
        @rangs = [[x+1,y-1],[x+2,y-1],[x-1,y+1],[x-1,y+2],[x+1,y+1],[x+1,y+2],[x+2,y+1],[x+2,y+2],[x,y]]
         when 7
        @rangs = [[x+1,y-1],[x+1,y-2],[x-1,y-1],[x-1,y-2],[x-2,y-1],[x-2,y-2],[x-1,y+1],[x-2,y+1],[x,y]]
       when 9
        @rangs = [[x+1,y+1],[x+2,y+1],[x+1,y-1],[x+2,y-1],[x+1,y-2],[x+2,y-2],[x-1,y-1],[x-1,y-2],[x,y]]   
      end
    # 以角色为中心的6X6格
    when 3
      t = []
      for ex in x-2..x+2
        for ey in y-2..y+2
          t.push([ex,ey])
        end
      end
      @rangs =  t
    end
  end
end


怎么在修改出跟大的来
其实义角色为中心的6x6格子在游戏中是3x3的 求高手帮忙 在后面加个更大的。
作者: qiduohua01    时间: 2013-3-31 22:27
没人回答吗?
作者: joe5491    时间: 2013-4-1 00:06
在when 3前面插入
  1. when 100    #範圍編號100,可改
  2.       t = []
  3.       for ex in x-10..x+10   # 範圍10*10 夠大了吧
  4.         for ey in y-10..y+10  #如果要更大,請改數字
  5.           t.push([ex,ey])
  6.         end
  7.       end
  8.       @rangs =  t
  9.     end
复制代码





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