晓月_游戏中的人物属性(三)人物升级啦
发表于2016-09-18
游戏中的快乐有一个就是扮演的人物升级了,因为战斗力的成长会使玩家有一种满足成就感。所以一般升级的特效,声音都会做得比较好。当然数值方面也会非常重要,成长太小,玩家会没有多大的升级感觉,成长太大可能会破坏游戏的平衡。当然除了特效声音,升级最重要的就是一瞬间完成,而且是原地满血满蓝,这个大多数玩家都能明显感到。
因为比较简单,暂时先升级这4个属性。
2、经验的曲线的话是依托于上面的等级进行变化的,多少等级对应多少经验值,我采用了简单的三次函数
3、基本的属性的话,以后可能会参数实际成长过程中的攻击次数,承受的伤害等等进行攻防成长偏移,现在采用固定的属性成长。暂时定为每级10点攻击,7点防御力
4、血量和蓝量的成长也算是很重要的一个属性成长了,以后肯定也会根据实际情况进行具体的改进。现在的思路是固定的成长 + 一个随机的小范围偏移
下面讲讲我具体的实现,当然都是业余的,希望大家批评指正。
LevelUpHandle.cs 管理升级的所有事情
1 2 3 4 5 6 7 8 9 10 11 12 | public static void levelUp( Player player ) { Debug.Log( "恭喜,升级了!" ); //等级 Level(player); //经验 Exp( player ); //基本属性 BasicAtts( player ); //HP MP HPMP( player ); } |
1、等级的提升算是比较简单的,因为他的增量是固定的,就是简单的 level ++;就好了。
1 2 3 4 | public static void Level(Player player) { AttributeHandle.plus_Level(player.Atts); } |
1 2 3 4 5 6 | public static void Exp(Player player) { int level = AttributeHandle.get_Level(player.Atts); int value = ( int )Mathf.Pow( level , 3 ) * 10 + 100; //经验曲线暂时设定为 AttributeHandle.set_Exp(player.Atts , value); } |
1 2 3 4 5 6 7 | private static void BasicAtts(Player player) { int attackValue = 10; AttributeHandle.plus_Attack(player.Atts, attackValue); int defendValue = 7; AttributeHandle.plus_Defend(player.Atts, defendValue); } |
1 2 3 4 5 6 7 8 9 | public static void HPMP( Player player ) { //HP每次都增加100 + 偏移量 10 int value = 100 + XYRandom.lottery(10); AttributeHandle.plus_HP(player.Atts ,value ); //MP每次都增加50 + 偏移量 value = 50 + XYRandom.lottery(5); AttributeHandle.plus_MP(player.Atts, value); } |