Java Swing游戏开发学习22

内容来自RyiSnow视频讲解

这一节讲的是Health Bar & Death Animation血条和死亡动画效果。

前言

上一节实现了玩家攻击怪,杀死怪。本节添加一些额外的效果,使游戏更有意思。

本节目标:

  • Death Effect死亡效果
  • Monster Health Bar怪物血条
  • Sound Effects音效
  • Additional AI附加人工智能

实现

死亡效果

这里的效果是,怪生命值为0的时候,怪会闪烁若干次,然后消失。是通过透明度值的交替设置实现的。作者说这只是一个示例,大家可以根据自己的脑洞,实现自己想要的怪死亡效果,比如爆炸什么的......

java 复制代码
public void dyingAnimation(Graphics2D g2) {
    dyingCounter++;
    int i = 5;
    if (dyingCounter <= i) {
        changeAlpha(g2, 0f);
    }
    else if (dyingCounter > i && dyingCounter <= i*2) {
        changeAlpha(g2, 1f);
    }
    else if (dyingCounter > i*2 && dyingCounter <= i*3) {
        changeAlpha(g2, 0f);
    }
    else if (dyingCounter > i*3 && dyingCounter <= i*4) {
        changeAlpha(g2, 1f);
    }
    else if (dyingCounter > i*4 && dyingCounter <= i*5) {
        changeAlpha(g2, 0f);
    }
    else if (dyingCounter > i*5 && dyingCounter <= i*6) {
        changeAlpha(g2, 1f);
    }
    else if (dyingCounter > i*6 && dyingCounter <= i*7) {
        changeAlpha(g2, 0f);
    }
    else if (dyingCounter > i*7 && dyingCounter <= i*8) {
        changeAlpha(g2, 1f);
    }
    else if (dyingCounter > i*8){
        dying = false;
        alive = false;
    }
}

怪物血条

在怪的上面绘制了2个矩形就实现了,和当前的生命值进行关联,在战斗中血条实时更新即可。

java 复制代码
// monster hp bar
if (type == 2) {
    double oneScale = (double)gp.tileSize / maxLife;
    double hpBarValue = oneScale * life;

    g2.setColor(new Color(35,35, 35));
    g2.fillRect(screenX-1, screenY - 16, gp.tileSize + 2, 12);
    g2.setColor(new Color(255,0, 30));
    g2.fillRect(screenX, screenY - 15, (int)hpBarValue, 10);
}
  • 作者还做了一个优化,就是血条的显示逻辑,当战斗中才显示,当停止战斗一段时间就不显示血条了。

音效

新增3个音效wav文件,分表代表攻击、受伤、挥剑,但是挥剑的音效,从下载的文件夹里面始终没有找到,看评论有人提这个问题,没人回答。暂时用开门音效代替了,虽然听起来奇怪,但是临时对付一下。

附加人工智能

当玩家击中怪的时候,怪会向玩家所在方向相反的方向逃走。这里是一个简单的示例,可以根据需要,增加自己想要的逻辑。

java 复制代码
public void damageReaction() {
	actionLockCounter = 0;
    direction = gp.player.direction;
}

这样就实现了一个简单的战斗系统,虽然比较简单,但作者说自己还是很满意的。毕竟自己实现出来的。

下一节会实现玩家、怪物的一些属性状态,比如攻击值、防御值、生命、武器等等,以最终实现这个动作角色扮演游戏action RPG.

代码

参考第6篇文章最后,可以使用git clone或直接下载获得完整项目

相关推荐
我命由我123452 分钟前
SSL 协议(HTTPS 协议的关键)
网络·经验分享·笔记·学习·https·ssl·学习方法
wrx繁星点点4 分钟前
事务的四大特性(ACID)
java·开发语言·数据库
IT学长编程12 分钟前
计算机毕业设计 Java酷听音乐系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·spring boot·毕业设计·课程设计·毕业论文·音乐系统·计算机毕业设计选题
IT学长编程29 分钟前
计算机毕业设计 基于协同过滤算法的个性化音乐推荐系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·spring boot·毕业设计·毕业论文·协同过滤算法·计算机毕业设计选题·个性化音乐推荐系统
小小娥子34 分钟前
Redis的基础认识与在ubuntu上的安装教程
java·数据库·redis·缓存
几何心凉41 分钟前
已解决:org.springframework.web.HttpMediaTypeNotAcceptableException
java
丶Darling.42 分钟前
代码随想录 | Day26 | 二叉树:二叉搜索树中的插入操作&&删除二叉搜索树中的节点&&修剪二叉搜索树
开发语言·数据结构·c++·笔记·学习·算法
华农第一蒟蒻44 分钟前
Java中JWT(JSON Web Token)的运用
java·前端·spring boot·json·token
两点王爷1 小时前
使用WebClient 快速发起请求(不使用WebClientUtils工具类)
java·网络
计算机学姐1 小时前
基于SpringBoot+Vue的高校运动会管理系统
java·vue.js·spring boot·后端·mysql·intellij-idea·mybatis