Project1

标题: 这段脚本中的数字是什么意思 [打印本页]

作者: 小和尚    时间: 2013-7-10 19:38
标题: 这段脚本中的数字是什么意思
  if @flash_shake != 0
    case @flash_shake
    when 9..10
      $game_screen.start_shake(0,0,0)
      self.x = @battler.screen_x
      self.y -=4
      self.z = @battler.screen_z
    when 6..8
      $game_screen.start_shake(0,0,0)
      self.x = @battler.screen_x
      self.y -=2
      self.z = @battler.screen_z
    when 3..5
      $game_screen.start_shake(0,0,0)
      self.x = @battler.screen_x
      self.y +=2
      self.z = @battler.screen_z
    when 1..2
      $game_screen.start_shake(0,0,0)
      self.x = @battler.screen_x
      self.y += 4
      self.z = @battler.screen_z
    end
    @flash_shake -= 1
  end

被放大的字体是什么意思 当1到2时?是什么1到2啊?
作者: swebok    时间: 2013-7-10 19:46
case @flash_shake
作者: 小和尚    时间: 2013-7-10 19:53
swebok 发表于 2013-7-10 19:46
case @flash_shake

case @flash_shake为1时是什么意思 体现在游戏中是什么效果
作者: 芯☆淡茹水    时间: 2013-7-11 14:55
本帖最后由 芯☆淡茹水 于 2013-7-11 15:08 编辑

举个差不多的例子,并且加上注释,相信LZ会明白
  1. #==============================================================================
  2. #定义一个变量 [url=home.php?mod=space&uid=236945]@gold[/url] ,然后代入 0 到 99 (含)的随机数。
  3. @gold = rand (100)
  4. #@gold 数值的分支
  5. case @gold
  6. #当 @gold 的值为 0 到 10 (含)时
  7. when 0..10
  8.   # 显示 "你的钱好少啊!"
  9.   p "你的钱好少啊!"
  10. #当 @gold 的值为 11 到 40 (含)时
  11. when 11..40
  12.   # 显示 "你的钱还没我多。"
  13.   p "你的钱还没我多。"
  14. #当 @gold 的值为 41 到 80 (含)时
  15. when 41..80
  16.   #显示 "原来你也有这么多钱啊。"
  17.   p "原来你也有这么多钱啊。"
  18. #当 @gold 的值为 81 到 99 (含)时
  19. when 81..99
  20.   #显示 "你好多钱,借点给我!"
  21.   p "你好多钱,借点给我!"
  22. end
  23. #----------------------------------------------------------------
  24. #case 先对一个表达式进行匹配判断,然后根据匹配结果进行分支选择。
  25. #case 将返回条件成立的 when 部分,若所有条件都不成立的话,则返回 nil。
  26. #----------------------------------------------------------------
  27. #说得通俗点,比如上面的例子,先 case @gold ,然后再和下面的 when 进行比较,
  28. #@gold 的值符合哪个 when ,就显示哪个。
  29. #
  30. #比如 @gold 随机出来的值是 30 时,那么就符合 when 11..40 ,所以就显示
  31. #"你的钱还没我多。"。当 @gold 随机出来的值是 88 时,就符合 when 81..99 ,
  32. #所以就显示 "你好多钱,借点给我!"
  33. #------------------------
  34. # 这和下面这段的效果一样
  35. #-----------------------
  36. #定义一个变量 @gold ,然后代入 0 到 99 (含)的随机数
  37. @gold = rand (100)
  38. #如果 @gold 大于等于 0 ,并且 @gold 小于等于 10 时
  39. if @gold >= 0 and @gold <= 10
  40.   # 显示 "你的钱好少啊!"
  41.   p "你的钱好少啊!"
  42. #如果 @gold 大于等于 11 ,并且 @gold 小于等于 40 时
  43. elsif @gold >= 11 and @gold <= 40
  44.   # 显示 "你的钱还没我多。"
  45.   p "你的钱还没我多。"
  46. #如果 @gold 大于等于 41 ,并且 @gold 小于等于 80 时
  47. elsif @gold >= 41 and @gold <= 80
  48.   #显示 "原来你也有这么多钱啊。"
  49.   p "原来你也有这么多钱啊。"
  50. #如果 @gold 大于等于 81 ,并且 @gold 小于等于 99 时
  51. elsif @gold >= 81 and @gold <= 99
  52.   #显示 "你好多钱,借点给我!"
  53.   p "你好多钱,借点给我!"
  54. end
  55. #==============================================================================
复制代码

作者: 芯☆淡茹水    时间: 2013-7-11 15:54
本帖最后由 芯☆淡茹水 于 2013-7-11 15:56 编辑

再把LZ的原脚本注释并解释下
  1. #==============================================================================
  2. #如果 @flash_shake 的值不为 0 。(@flash_shake 为自定义,原脚本里没有)
  3. if @flash_shake != 0               
  4.   case @flash_shake                  # @flash_shake 的分支              
  5.   when 9..10                         # 当 @flash_shake 值是 9 到 10 时                  
  6.     $game_screen.start_shake(0,0,0)  # 画面震动
  7.     self.x = @battler.screen_x       # X 坐标等于战斗者的战斗画面 X 坐标   
  8.     self.y -=4                       # Y 坐标减去 4
  9.     self.z = @battler.screen_z       # Z 坐标等于战斗者的战斗画面 Z 坐标
  10.   when 6..8                          # 当 @flash_shake 值是 6 到 8 时
  11.     $game_screen.start_shake(0,0,0)
  12.     self.x = @battler.screen_x
  13.     self.y -=2                       # Y 坐标减去 2
  14.     self.z = @battler.screen_z
  15.   when 3..5                          # 当 @flash_shake 值是 3 到 5 时
  16.     $game_screen.start_shake(0,0,0)
  17.     self.x = @battler.screen_x
  18.     self.y +=2                       # Y 坐标加上 2
  19.     self.z = @battler.screen_z
  20.   when 1..2                          # 当 @flash_shake 值是 1 到 2 时
  21.     $game_screen.start_shake(0,0,0)
  22.     self.x = @battler.screen_x
  23.     self.y += 4                      # Y 坐标加上 4
  24.     self.z = @battler.screen_z
  25.   end
  26.   @flash_shake -= 1                  # @flash_shake 的值减去 1
  27. end
  28. #==============================================================================
  29. =begin
  30. 上面那段貌似定义在 Sprite_Battler 里,其作用是战斗者在特定条件下(比如挨打)
  31. 战斗者的战斗图上下晃动并加上画面震动。要实现这个效果时,先赋予 @flash_shake
  32. 一个值,大概是:@flash_shake = 10 。通过画面的刷新来实现 @flash_shake 的递减,
  33. 然后根据 @flash_shake 的值来上下“移动”战斗图。

  34. 比如 @flash_shake 的初始值是 10 ,然后符合 when 9..10 ,战斗图的 X 和 Z 坐标
  35. 不变,Y 坐标减 4 ,然后进行下面的 @flash_shake -= 1 ;下一次刷新时(当然刷新速度
  36. 是很快的),@flash_shake 的值就是 9 ,任然符合 when 9..10 ,Y 坐标再减去 4,
  37. @flash_shake 的值再减去 1 ;第三次刷新时,@flash_shake 的值就是 8 ,符合
  38. when 6..8 ,Y 坐标减去 2,@flash_shake 的值再减去 1;............@flash_shake
  39. 的值一直递减,直到下面的 when 3..5 和 when 1..2 全部都“进行”了两遍,一直到
  40. @flash_shake 的值等于 0 时。由于条件限制:if @flash_shake != 0 ,所以该功能
  41. 关闭,战斗图上下晃动结束。
  42. =end
  43. #==============================================================================
复制代码
突然发现自己适合去做脚本教程,,,
作者: 爱夏的鱼    时间: 2013-7-12 11:39
战斗时人物上下晃动




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