内容来自RyiSnow视频讲解
这一节讲的是Hit Detection(and Bug Fix)攻击判定与bug修复。
前言
主要实现,玩家攻击Monster怪
攻击动画
这里作者又新增了8张图片,就是攻击的图片。这个图片的宽高比例就不是1:1了。要不16×32,要不32×16, 1:2和2:1的这种类型。因此重构了一些代码,修改了setup方法。
向上攻击和向左攻击的时候,由于玩家在武器的下面或者右面,这个时候需要调整一下图片的位置,不然会看起来不符合逻辑。向右和向下都没问题。
攻击判定
根据玩家所持有的武器决定,目前还没有武器,所以给一个固定宽高,赋值给attackArea矩形,做测试使用。
武器的碰撞区域示意图。
java
attackArea.width = 36;
attackArea.height = 36;
这里有一个小问题,当玩家按Enter键从title state进入游戏后,有一个玩家挥舞兵器的动作,这里还是由于KeyHandler中状态判断,缺少else导致的,加上就好了。因为挥舞武器也是Enter触发的。
怪接收伤害、被消灭
java
public void damageMonster(int i) {
if (i != 999) {
if (!gp.monster[i].invincible) {
gp.monster[i].life -= 1;
gp.monster[i].invincible = true;
if (gp.monster[i].life <= 0) {
gp.monster[i] = null;
}
}
}
}
怪的初始生命为4,砍4刀,怪就消失,被消灭了。
下一节,将给怪增加血条和死亡动画
代码
稍后提交到My2DGame仓库
参考第6篇文章最后,可以使用git clone或直接下载获得完整项目