内容来自RyiSnow视频讲解
这一节讲的是Character Status角色状态或属性。
前言
这一节讲的是实现角色状态或属性的显示,就有点像RPG游戏中,人物属性显示的面板,其中有玩家的装备、玩家的等级,各种防御值、闪避值、跑速什么的。
类似下图游戏的人物属性面板,当然没这么华丽,毕竟是像素风格的2D游戏。
实现
这里还是绘制了一个矩形,然后在矩形框中填充信息来实现的角色属性显示。虽然看起来比较简陋,但是合抱之木生于毫末嘛。
角色添加的属性,下面这些属性是需要显示在属性框中的。这些都是简单的示例,可以根据自己的需要添加更多的属性。
// player status
maxLife = 6;
life = maxLife;//生命值
level = 1;//级别
strength = 1;//力量。力量越大,输出的伤害越大。
dexterity = 1;//闪避。闪避越高,收到的伤害就越小
exp = 0;//当前经验
nextLevelExp = 5;//升级所需经验
coin = 0;//钱
currentWeapon = new OBJ_Sword_Normal(gp);//武器
currentShield = new OBJ_Shield_Wood(gp);//盾牌
attack = getAttack();//总的攻击值取决于力量和武器。
defense = getDefense();//总的防御值取决于闪避和盾牌
效果
- 英文效果
- 中文效果
这里没有使用像素字体,使用的是宋体,由于像素字体和作者所用的不一样,效果看起来比较尴尬,就没用。为了看中文的显示效果,特地用中文显示试了一下。
绘制一个自定义的矩形
这里增加了一个角色状态,当按c键的时候触发。就像之前显示与NPC对话框的时候调用的方法是一样的,就是显示位置和大小有区别。再次按c键属性框消失。
在矩形中显示角色属性
左侧显示属性名称
//names
g2.drawString("Level", textX, textY);
textY += lineHeight;
g2.drawString("Life", textX, textY);
textY += lineHeight;
g2.drawString("Strength", textX, textY);
textY += lineHeight;
g2.drawString("Dexterity", textX, textY);
textY += lineHeight;
g2.drawString("Attack", textX, textY);
textY += lineHeight;
g2.drawString("Defense", textX, textY);
textY += lineHeight;
g2.drawString("Exp", textX, textY);
textY += lineHeight;
g2.drawString("Next Level", textX, textY);
textY += lineHeight;
g2.drawString("Coin", textX, textY);
textY += lineHeight + 20;
g2.drawString("Weapon", textX, textY);
textY += lineHeight + 15;
g2.drawString("Shield", textX, textY);
textY += lineHeight;
右侧显示属性值
value = String.valueOf(gp.player.level);
textX = getXforAlignToRightText(value, tailX);
g2.drawString(value, textX, textY);
textY += lineHeight;
......
更多细节可以参考项目UI类中的代码。这一节基本上就是增加人物角色的属性,然后创建一个角色属性矩形框,把属性显示到里面,就结束了。
代码
参考第6篇文章最后,可以使用git clone或直接下载获得完整项目