Java Swing游戏开发学习21

内容来自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或直接下载获得完整项目

相关推荐
忘记9262 分钟前
GET 请求与 POST 请求的核心区别
java
没有bug.的程序员8 分钟前
JVM 与 Docker:资源限制的真相
java·jvm·后端·spring·docker·容器
lkbhua莱克瓦249 分钟前
IO流——打印流
java·开发语言·前端·学习方法
im_AMBER13 分钟前
Canvas架构手记 08 CSS Transform | CSS 显示模型 | React.memo
前端·css·笔记·学习·架构
赵得C18 分钟前
软件设计师前沿考点精讲:新兴技术与性能优化实战
java·开发语言·分布式·算法·设计模式·性能优化
组合缺一18 分钟前
Solon AI 开发学习17 - generate - 使用复杂提示语
java·学习·ai·llm·solon·mcp
心动啊12118 分钟前
简单学习下redis
数据库·redis·学习
汉克老师21 分钟前
2023年海淀区中小学信息学竞赛复赛(小学组试题第七题 赛车游戏(car))
c++·游戏·双指针·海淀区中小学信息竞赛
爱笑的眼睛1122 分钟前
从零构建与深度优化:PyTorch训练循环的工程化实践
java·人工智能·python·ai
松莫莫25 分钟前
Spring Boot 整合 MQTT 全流程详解(Windows 环境)—— 从 Mosquitto 安装到消息收发实战
windows·spring boot·后端·mqtt·学习