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

Project1

 找回密码
 注册会员
搜索

请问要如何做到这种效果?

查看数: 2722 | 评论数: 11 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2012-12-14 18:50

正文摘要:

本帖最后由 美丽晨露 于 2012-12-15 13:46 编辑 得到增益状态时 增加该能力的数字变成红色字表示 得到负面状态时 减少该能力的数字变成蓝色字表示 要怎么做? ...

回复

东野青龙 发表于 2012-12-15 18:57:37
羞射了 发表于 2012-12-14 22:30
曾经玩过某款游戏,一直以为数值是绿色的,某次抓到一只数值黄色的怪,一开始以为是稀有,后来才发觉原来黄 ...

呃……是显示的问题么……{:2_271:}
我重来一遍吧{:2_265:}

那个……我觉得改变颜色的设定若用来显示单一物品或者状态的实际效果的话,就与叠加无关了。比如某物品效果为力量-10,叠加后人物力量+5(即是未装备该物品时人物力量叠加效果为+15),当光标选定该物品时画面就显示表示力量下降的颜色即可。个人感觉在人物能力种类较多的情况下,这一设定可以方便玩家更快把握某物品或状态对人物整体能力的影响情况,如果留下一些空间显示具体变化数值效果会更好。

PS:点评只能显示一行么,我看着字数限制洋洋洒洒辛辛苦苦打了许久啊……{:2_264:}

点评

你的建议很不错啊。在状态影响下,能力值后边显示:+“”或者—“”的确比较详细  发表于 2012-12-15 19:03
美丽晨露 发表于 2012-12-15 17:59:57
cinderelmini 发表于 2012-12-15 17:56
啊……哀家罪过了啊……
好久没碰这些脚本……忘记了这些东西了啊!
原谅哀家~

谢谢啊
虽然我已经解决了
不过还是得谢谢你啊

点评

哦呀呀~~复习真是件必修的事情啊……  发表于 2012-12-15 18:54
cinderelmini 发表于 2012-12-15 17:56:48
啊……哀家罪过了啊……
好久没碰这些脚本……忘记了这些东西了啊!
原谅哀家~
以下~LS的一句话让哀家无地自容……
明明……唉~以下,代替原谅的Window_Base里的相应函数应该可以的~
测试了一下……
  1.   #--------------------------------------------------------------------------
  2.   # ● 描绘能力值
  3.   #     actor : 角色
  4.   #     x     : 描画目标 X 坐标
  5.   #     y     : 描画目标 Y 坐标
  6.   #     type  : 能力值种类 (0~6)
  7.   #--------------------------------------------------------------------------
  8.   def draw_actor_parameter(actor, x, y, type)
  9.     case type
  10.     when 0
  11.       parameter_name = $data_system.words.atk
  12.       parameter_value = actor.atk
  13.       if actor.base_atk > actor.atk
  14.         color = Color.new(0, 0, 255)
  15.       elsif actor.base_atk < actor.atk
  16.         color = Color.new(255, 0, 0)
  17.       else
  18.         color = normal_color
  19.       end
  20.     when 1
  21.       parameter_name = $data_system.words.pdef
  22.       parameter_value = actor.pdef
  23.       if actor.base_pdef > actor.pdef
  24.         color = Color.new(0, 0, 255)
  25.       elsif actor.base_pdef < actor.pdef
  26.         color = Color.new(255, 0, 0)
  27.       else
  28.         color = normal_color
  29.       end
  30.     when 2
  31.       parameter_name = $data_system.words.mdef
  32.       parameter_value = actor.mdef
  33.       if actor.base_mdef > actor.mdef
  34.         color = Color.new(0, 0, 255)
  35.       elsif actor.base_mdef < actor.mdef
  36.         color = Color.new(255, 0, 0)
  37.       else
  38.         color = normal_color
  39.       end
  40.     when 3
  41.       parameter_name = $data_system.words.str
  42.       parameter_value = actor.str
  43.       if actor.base_str > actor.str
  44.         color = Color.new(0, 0, 255)
  45.       elsif actor.base_str < actor.str
  46.         color = Color.new(255, 0, 0)
  47.       else
  48.         color = normal_color
  49.       end
  50.     when 4
  51.       parameter_name = $data_system.words.dex
  52.       parameter_value = actor.dex
  53.       if actor.base_dex > actor.dex
  54.         color = Color.new(0, 0, 255)
  55.       elsif actor.base_dex < actor.dex
  56.         color = Color.new(255, 0, 0)
  57.       else
  58.         color = normal_color
  59.       end
  60.     when 5
  61.       parameter_name = $data_system.words.agi
  62.       parameter_value = actor.agi
  63.       if actor.base_agi > actor.agi
  64.         color = Color.new(0, 0, 255)
  65.       elsif actor.base_agi < actor.agi
  66.         color = Color.new(255, 0, 0)
  67.       else
  68.         color = normal_color
  69.       end
  70.     when 6
  71.       parameter_name = $data_system.words.int
  72.       parameter_value = actor.int
  73.       if actor.base_int > actor.int
  74.         color = Color.new(0, 0, 255)
  75.       elsif actor.base_int < actor.int
  76.         color = Color.new(255, 0, 0)
  77.       else
  78.         color = normal_color
  79.       end
  80.     end
  81.     self.contents.font.color = system_color
  82.     self.contents.draw_text(x, y, 120, 32, parameter_name)
  83.       self.contents.font.color = color
  84.     self.contents.draw_text(x + 120, y, 36, 32, parameter_value.to_s, 2)
  85.   end
复制代码
yagami 发表于 2012-12-14 22:54:56
不用通过状态 比如 比较str 与 base_str的大小就可以了

点评

夜神菌V5……  发表于 2012-12-15 17:57
谢谢你的建议  发表于 2012-12-15 00:43
羞射了 发表于 2012-12-14 22:30:12
曾经玩过某款游戏,一直以为数值是绿色的,某次抓到一只数值黄色的怪,一开始以为是稀有,后来才发觉原来黄色才是原本的没有任何加成的数值,绿色是有加成的数值。

举这个例子想说明这种类型的设计真不咋地。

你一个状态假设有升有降,如果是复数的状态呢?加减重叠后这颜色不是没什么意义了?

点评

尤其在人物能力比较多样的情况下方便玩家迅速了解人物整体能力的变化。我倒是觉得再留一个空间显示具体变化数值效果会更好。  发表于 2012-12-15 18:45
哦,看来只好换另一种方式实现效果了?  发表于 2012-12-15 00:43
美丽晨露 发表于 2012-12-14 22:17:30
cinderelmini 发表于 2012-12-14 22:00
也不是每个状态都要判定啦~
就是一些有影响到能力值的状态写进去就是了~

如果某个状态的既有提高某能力值
也有降低某能力值的
又该怎么弄?
cinderelmini 发表于 2012-12-14 22:00:46
美丽晨露 发表于 2012-12-14 20:53
谢谢,不过这样做会不会麻烦点啊。
每个状态都要进行判断,很混乱。
只要判定一下数值是增是减,

也不是每个状态都要判定啦~
就是一些有影响到能力值的状态写进去就是了~

如果是用数值的浮动作为判定的话……
感觉会比较不直接的样子~
似乎需要再写一组比对值赋值再进行大小对比~
好像写起来有点拗……

点评

你在说什么?  发表于 2012-12-14 22:01
美丽晨露 发表于 2012-12-14 20:53:52
cinderelmini 发表于 2012-12-14 20:36
先在:Window_Base
里面找到这样一段:其中:这几句就是要动手脚的地方了。

谢谢,不过这样做会不会麻烦点啊。
每个状态都要进行判断,很混乱。
只要判定一下数值是增是减,
然后改变一下字的颜色
这样会不会方便一些?
cinderelmini 发表于 2012-12-14 20:36:16
先在:Window_Base
里面找到这样一段:
  1.   #--------------------------------------------------------------------------
  2.   # ● 描绘能力值
  3.   #     actor : 角色
  4.   #     x     : 描画目标 X 坐标
  5.   #     y     : 描画目标 Y 坐标
  6.   #     type  : 能力值种类 (0~6)
  7.   #--------------------------------------------------------------------------
  8.   def draw_actor_parameter(actor, x, y, type)
  9.     case type
  10.     when 0
  11.       parameter_name = $data_system.words.atk
  12.       parameter_value = actor.atk
  13.     when 1
  14.       parameter_name = $data_system.words.pdef
  15.       parameter_value = actor.pdef
  16.     when 2
  17.       parameter_name = $data_system.words.mdef
  18.       parameter_value = actor.mdef
  19.     when 3
  20.       parameter_name = $data_system.words.str
  21.       parameter_value = actor.str
  22.     when 4
  23.       parameter_name = $data_system.words.dex
  24.       parameter_value = actor.dex
  25.     when 5
  26.       parameter_name = $data_system.words.agi
  27.       parameter_value = actor.agi
  28.     when 6
  29.       parameter_name = $data_system.words.int
  30.       parameter_value = actor.int
  31.     end
  32.     self.contents.font.color = system_color
  33.     self.contents.draw_text(x, y, 120, 32, parameter_name)
  34.     self.contents.font.color = normal_color
  35.     self.contents.draw_text(x + 120, y, 36, 32, parameter_value.to_s, 2)
  36.   end
复制代码
其中:
  1.     self.contents.font.color = system_color
  2.     self.contents.draw_text(x, y, 120, 32, parameter_name)
  3.     self.contents.font.color = normal_color
  4.     self.contents.draw_text(x + 120, y, 36, 32, parameter_value.to_s, 2)
复制代码
这几句就是要动手脚的地方了。


先随便找个地方写上这样一段:
虽然判定句子有点长……

  1. if actor.stste?(状态1  ID)
  2. self.contents.font.color = 该状态对应的文字颜色  Color.new(R, G, B)  可以自己在调色板里设置。

  3. elsif actor.stste?(状态2  ID)
  4. self.contents.font.color = 该状态对应的文字颜色

  5. elsif ………………
  6. (以此类推写下去最后再给个例外:)

  7. else
  8. self.contents.font.color = normal_color
  9. end
复制代码
意思就是如果角色的状态里包含某个ID 的状态的话,
就赋予文字相应的颜色,要注意的一点就是,
如果角色的状态里有2个或以上会改变颜色的状态的话,只会以靠后的状态作为改变颜色的标准。
写好这些设定后,回到刚才Window_Base里的那段,
找到:
  1.     self.contents.font.color = normal_color
  2.     self.contents.draw_text(x + 120, y, 36, 32, parameter_value.to_s, 2)
复制代码
这两行,就是描绘数值的句子了,
其中第一句就是颜色句子,
把刚才写的那段状态判定颜色的句子代替掉
self.contents.font.color = normal_color
这句,或者直接写在这句和self.contents.draw_text,之间就可以了。

以上……

点评

...10年后的8月。。。  发表于 2012-12-14 20:38
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-9-30 01:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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