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

Project1

 找回密码
 注册会员
搜索
查看: 2139|回复: 6
打印 上一主题 下一主题

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
51 小时
注册时间
2014-1-23
帖子
36
跳转到指定楼层
1
发表于 2015-1-3 18:59:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
哪位大神教一下我怎么该技能方向?我这是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

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

2
发表于 2015-1-3 19:16:39 | 只看该作者
简单改了一下,你可能需要Game_Character#direction来判断角色朝向。
改之后的效果为:
角色面向左,则会攻击角色左侧(不含正上方和正下方),上下范围为1的所有敌人。
角色面向右,则会攻击角色右侧(不含正上方和正下方),上下范围为1的所有敌人。
RUBY 代码复制
  1. #==============================================
  2. def skill_鬼斩
  3. #------------------------------------------
  4. #  角色击中boss的处理
  5. #------------------------------------------
  6.   for boss in $game_map.events.values
  7.   next if boss.return_erased2
  8.   next if boss.list == nil
  9.   next if boss.list[0].code != 108
  10.   next if boss.list[1].parameters[0] != "Boss"
  11.   #当boss的生命大于0
  12.   if boss.hp >0
  13.   #px 等于 角色的X坐标
  14.   px = $game_player.x
  15.   #py 等于 角色的Y坐标
  16.   py = $game_player.y
  17.   # 朝向判定(仅对左右有效)Modified
  18.   case $game_player.direction
  19.   when 4
  20.     d = -1
  21.   when 6
  22.     d = 1
  23.   else
  24.     d = 0
  25.   end
  26.   #判断角色与boss之间的距离 是否在 指定范围内
  27.   if (boss.x - px) * d > 0 && (py - boss.y).abs <= 1        # Modified
  28.       #随机数 10
  29.       case rand(10)
  30.       #当随机数 等于 0到8 之间的任何一个数的时候
  31.       when 0..8
  32.       #boss显示技能的动画
  33.       boss.animation_id = $data_skills[@skill.id].animation2_id
  34.       #执行伤害
  35.       boss.damage = $data_skills[@skill.id].power + @ppp.str + @ppp.atk
  36.       boss.damage*= 100-$data_skills[@skill.id].variance+rand($data_skills[@skill.id].variance*2+1)
  37.       boss.damage/= 100
  38.       boss.damage_pop = true
  39.       #boss跳一下
  40.       boss.jump(0, 0)
  41.       #当随机数 等于 9 的时候
  42.       when 9
  43.       #boss显示技能的动画
  44.       boss.animation_id = $data_skills[@skill.id].animation2_id
  45.       #执行伤害
  46.       boss.damage = $data_skills[@skill.id].power*2 + @ppp.str + @ppp.atk
  47.       boss.damage*= 100-$data_skills[@skill.id].variance+rand($data_skills[@skill.id].variance*2+1)
  48.       boss.damage/= 100
  49.       boss.damage_pop = true
  50.       boss.critical = true
  51.       #boss跳一下
  52.       boss.jump(0, 0)
  53.     end
  54.   # 增加连击
  55.   $game_variables[$变量段+10] += 1
  56.   #连击维持时间恢复
  57.   $lianjie = $game_party.actors[0].dex
  58.   #显示消息
  59.   Mess_Text.write ("#{boss.list[2].parameters[0]}受到#{boss.damage.to_i}伤害。")
  60. end #if
  61. end #if
  62. end #for
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
51 小时
注册时间
2014-1-23
帖子
36
3
 楼主| 发表于 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 #鬼斩技能
回复 支持 反对

使用道具 举报

Lv1.梦旅人

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

表示不会=  ={:2_270:}
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
51 小时
注册时间
2014-1-23
帖子
36
5
 楼主| 发表于 2015-1-3 19:37:46 | 只看该作者
# 朝向判定(仅对左右有效)Modified
   case $game_party.direction     #出现错误。
     when 4
       d = -1
    when 6
       d = 1
    else
       d = 0
    end
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
51 小时
注册时间
2014-1-23
帖子
36
6
 楼主| 发表于 2015-1-3 19:45:36 | 只看该作者
$game_player.direction
哪么我要伤害在面前三格呢?怎么改?谢谢。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
51 小时
注册时间
2014-1-23
帖子
36
7
 楼主| 发表于 2015-1-3 19:52:22 | 只看该作者
谢谢你了,解决了。。{:2_267:}
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-30 17:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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