查看: 2528|回复: 6

[已经解决] 技能伤害方向问题特来请教大神指点迷津!!!!!

[复制链接]
梦石
0
星屑
50
在线时间
51 小时
注册时间
2014-1-23
回帖
29
发表于 2015-1-3 18:59:22 | 显示全部楼层 |阅读模式

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

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

×
哪位大神教一下我怎么该技能方向?我这是ARPG系统= =。比如角色面向左那么技能伤害就是Y<=2的X的负半轴,角色
面向右那么技能伤害就是Y<=2的X的正半轴,就是单方向的伤害。这是我改版的横版系统,不用考虑上下,只需要左右
。其实我也改了但是只能面向左伤害= =所以特来请教大神指点迷津!谢谢!


#==============================================
def skill_鬼斩
#------------------------------------------
#  角色击中boss的处理
#------------------------------------------
  for boss in $game_map.events.values
  next if boss.return_erased2
  next if boss.list == nil
  next if boss.list[0].code != 108
  next if boss.list[1].parameters[0] != "Boss"
  #当boss的生命大于0
  if boss.hp >0
  #px 等于 角色的X坐标
  px = $game_player.x
  #py 等于 角色的Y坐标
  py = $game_player.y
  #判断角色与boss之间的距离 是否在 3*1格的范围内
  if (px - boss.x).abs <= 3 and (py - boss.y).abs <= 1        ←#我一直是改这行。。。。= =
      #随机数 10
      case rand(10)
      #当随机数 等于 0到8 之间的任何一个数的时候
      when 0..8
      #boss显示技能的动画
      boss.animation_id = $data_skills[@skill.id].animation2_id
      #执行伤害
      boss.damage = $data_skills[@skill.id].power + @ppp.str + @ppp.atk
      boss.damage*= 100-$data_skills[@skill.id].variance+rand($data_skills[@skill.id].variance*2+1)
      boss.damage/= 100
      boss.damage_pop = true
      #boss跳一下
      boss.jump(0, 0)
      #当随机数 等于 9 的时候
      when 9
      #boss显示技能的动画
      boss.animation_id = $data_skills[@skill.id].animation2_id
      #执行伤害
      boss.damage = $data_skills[@skill.id].power*2 + @ppp.str + @ppp.atk
      boss.damage*= 100-$data_skills[@skill.id].variance+rand($data_skills[@skill.id].variance*2+1)
      boss.damage/= 100
      boss.damage_pop = true
      boss.critical = true
      #boss跳一下
      boss.jump(0, 0)
    end
  # 增加连击
  $game_variables[$变量段+10] += 1
  #连击维持时间恢复
  $lianjie = $game_party.actors[0].dex
  #显示消息
  Mess_Text.write ("#{boss.list[2].parameters[0]}受到#{boss.damage.to_i}伤害。")
end #if
end #if
end #for
梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 2015-1-3 19:16:39 | 显示全部楼层
简单改了一下,你可能需要Game_Character#direction来判断角色朝向。
改之后的效果为:
角色面向左,则会攻击角色左侧(不含正上方和正下方),上下范围为1的所有敌人。
角色面向右,则会攻击角色右侧(不含正上方和正下方),上下范围为1的所有敌人。
[pre lang="Ruby"]#==============================================
def skill_鬼斩
#------------------------------------------
#  角色击中boss的处理
#------------------------------------------
  for boss in $game_map.events.values
  next if boss.return_erased2
  next if boss.list == nil
  next if boss.list[0].code != 108
  next if boss.list[1].parameters[0] != "Boss"
  #当boss的生命大于0
  if boss.hp >0
  #px 等于 角色的X坐标
  px = $game_player.x
  #py 等于 角色的Y坐标
  py = $game_player.y
  # 朝向判定(仅对左右有效)Modified
  case $game_player.direction
  when 4
    d = -1
  when 6
    d = 1
  else
    d = 0
  end
  #判断角色与boss之间的距离 是否在 指定范围内
  if (boss.x - px) * d > 0 && (py - boss.y).abs <= 1        # Modified
      #随机数 10
      case rand(10)
      #当随机数 等于 0到8 之间的任何一个数的时候
      when 0..8
      #boss显示技能的动画
      boss.animation_id = $data_skills[@skill.id].animation2_id
      #执行伤害
      boss.damage = $data_skills[@skill.id].power + @ppp.str + @ppp.atk
      boss.damage*= 100-$data_skills[@skill.id].variance+rand($data_skills[@skill.id].variance*2+1)
      boss.damage/= 100
      boss.damage_pop = true
      #boss跳一下
      boss.jump(0, 0)
      #当随机数 等于 9 的时候
      when 9
      #boss显示技能的动画
      boss.animation_id = $data_skills[@skill.id].animation2_id
      #执行伤害
      boss.damage = $data_skills[@skill.id].power*2 + @ppp.str + @ppp.atk
      boss.damage*= 100-$data_skills[@skill.id].variance+rand($data_skills[@skill.id].variance*2+1)
      boss.damage/= 100
      boss.damage_pop = true
      boss.critical = true
      #boss跳一下
      boss.jump(0, 0)
    end
  # 增加连击
  $game_variables[$变量段+10] += 1
  #连击维持时间恢复
  $lianjie = $game_party.actors[0].dex
  #显示消息
  Mess_Text.write ("#{boss.list[2].parameters[0]}受到#{boss.damage.to_i}伤害。")
end #if
end #if
end #for
[/pre]
回复

使用道具 举报

梦石
0
星屑
50
在线时间
51 小时
注册时间
2014-1-23
回帖
29
 楼主| 发表于 2015-1-3 19:32:43 | 显示全部楼层
RyanBern 发表于 2015-1-3 19:16
简单改了一下,你可能需要Game_Character#direction来判断角色朝向。
改之后的效果为:
角色面向左,则会攻 ...

#  角色击中enemy的处理
#------------------------------------------
  for enemy in $game_map.events.values
    next if enemy.return_erased2
    next if enemy.list == nil
    next if enemy.list[0].code != 108
    next if enemy.list[1].parameters[0] != "敌人"
  #当敌人的生命大于0
  if enemy.hp >0
    #px 等于 角色的X坐标
    px = $game_player.x
    #py 等于 角色的Y坐标
    py = $game_player.y
# 朝向判定(仅对左右有效)Modified
   case $game_party.direction     #出现错误。
     when 4
       d = -1
    when 6
       d = 1
    else
       d = 0
    end
  #判断角色与boss之间的距离 是否在 指定范围内
  if (enemy.x - px) * d > 0 && (py - enemy.y).abs <= 1        # Modified
    #随机数 10
    case rand(10)
    #当随机数 等于 0到8 之间的任何一个数的时候
    when 0..8
      #b敌人显示技能的动画
      enemy.animation_id = $data_skills[@skill.id].animation2_id
      #执行伤害
      enemy.damage = $data_skills[@skill.id].power + @ppp.str + @ppp.atk
      enemy.damage*= 100-$data_skills[@skill.id].variance+rand($data_skills[@skill.id].variance*2+1)
      enemy.damage/= 100
      enemy.damage_pop = true
      #enemy跳一下
      enemy.jump(0, 0)
      when 9
      #b敌人显示技能的动画
      enemy.animation_id = $data_skills[@skill.id].animation2_id
      #执行暴击伤害
      enemy.damage = $data_skills[@skill.id].power*2 + @ppp.str + @ppp.atk
      enemy.damage*= 100-$data_skills[@skill.id].variance+rand($data_skills[@skill.id].variance*2+1)
      enemy.damage/= 100
      enemy.damage_pop = true
      enemy.critical = true
      #enemy跳一下
      enemy.jump(0, 0)
    end
    #连击加1
  $game_variables[$变量段+10] += 1
  #连击维持时间恢复
  $lianjie = $game_party.actors[0].dex
  #显示消息
  Mess_Text.write ("#{enemy.list[2].parameters[0]}受到#{enemy.damage.to_i}伤害。")
end #if
end#if
end
end #for
end #鬼斩技能
回复

使用道具 举报

梦石
0
星屑
50
在线时间
51 小时
注册时间
2014-1-23
回帖
29
 楼主| 发表于 2015-1-3 19:35:26 | 显示全部楼层
RyanBern 发表于 2015-1-3 19:16
简单改了一下,你可能需要Game_Character#direction来判断角色朝向。
改之后的效果为:
角色面向左,则会攻 ...

表示不会=  ={:2_270:}
回复

使用道具 举报

梦石
0
星屑
50
在线时间
51 小时
注册时间
2014-1-23
回帖
29
 楼主| 发表于 2015-1-3 19:37:46 | 显示全部楼层
# 朝向判定(仅对左右有效)Modified
   case $game_party.direction     #出现错误。
     when 4
       d = -1
    when 6
       d = 1
    else
       d = 0
    end
回复

使用道具 举报

梦石
0
星屑
50
在线时间
51 小时
注册时间
2014-1-23
回帖
29
 楼主| 发表于 2015-1-3 19:45:36 | 显示全部楼层
$game_player.direction
哪么我要伤害在面前三格呢?怎么改?谢谢。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
51 小时
注册时间
2014-1-23
回帖
29
 楼主| 发表于 2015-1-3 19:52:22 | 显示全部楼层
谢谢你了,解决了。。{:2_267:}
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部