项目02《游戏-14-开发》Unity3D
基于 项目02《游戏-13-开发》Unity3D ,
任务:战斗系统之击败怪物与怪物UI血条信息

using UnityEngine;
public abstract class Living : MonoBehaviour{
protected float hp;
protected float attack;
protected float define;
protected bool isDead;
public float Hp {
get {
return hp;
}
set {
hp = value;
}
}
public Animator Anim { get; set; }
public virtual void onHurt(float attack) {
float lost = attack - this.define;
if (lost <= 0)
return;
this.hp -= lost;
if (this.hp < 0) {
this.isDead = true;
//播放死亡动画
Anim.SetTrigger("DeathTrigger");
if (isDead == true)
return;
}
}
protected void Start(){
InitValue();
}
protected virtual void InitValue() {
this.hp = 10;
this.attack = 3;
this.define = 1;
this.isDead = false;
Anim = GetComponent<Animator>();
}
}

using UnityEngine;
public class Enemy : Living{
protected override void InitValue(){
this.hp = 30;
this.attack = 3;
this.define = 1;
this.isDead = false;
Anim = GetComponent<Animator>();
}
}

using UnityEngine;
public class Weapon : MonoBehaviour{
float damage = 3f;
public Animator Anim { get; set; }
bool isdead;
void Awake()
{
isdead = false;
Anim = GetComponent<Animator>();
}
void OnTriggerEnter(Collider other)
{
Debug.Log("怪物碰撞武器");
if (other.CompareTag("Enemy"))
{
Enemy enemy = other.GetComponent<Enemy>();
if (enemy != null)
{
if (enemy.Hp <= 0)
{
if (isdead == true)
return;
isdead = true;
enemy.GetComponent<Animator>().SetTrigger("DeathTrigger");
}
enemy.Hp -= damage;
enemy.GetComponent<Animator>().SetTrigger("HitTrigger");
}
}
}
}

using UnityEngine;
using UnityEngine.UI;
public class EnemyInfo : MonoBehaviour{
Enemy enemy;
Slider health1;
void Start(){
var enemyObj = GameObject.FindGameObjectWithTag("Enemy");
enemy = enemyObj.GetComponent<Enemy>();
health1 = GameObject.Find("H/Slider3").GetComponent<Slider>();
}
void Update(){
if (health1 != null)
health1.value = enemy.Hp;
}
}

using UnityEngine;
public class Cage : MonoBehaviour{
private GameObject uiPrefabInstance; //敌人信息实例化UI
void OnTriggerEnter(Collider other){
Debug.Log("角色进入牢笼");
if (other.CompareTag("Player")){
GameObject prefab = Resources.Load<GameObject>("Prefabs/Panel/Package/EnemyInfo");
uiPrefabInstance = Instantiate(prefab, new Vector3(0f, -100, 0f), Quaternion.identity);
uiPrefabInstance.transform.SetParent(GameObject.Find("Canvas").transform, false);
}
}
private void OnTriggerExit(Collider other){
if (other.CompareTag("Player"))
GameObject.Find("EnemyInfo(Clone)").gameObject.SetActive(false);
}
}
实现效果:
进入牢笼后,

退出牢笼后,

击打怪物,
当血量减为0,

离开牢笼,

End.
相关文章:
项目02《游戏-14-开发》Unity3D
基于 项目02《游戏-13-开发》Unity3D , 任务:战斗系统之击败怪物与怪物UI血条信息 using UnityEngine; public abstract class Living : MonoBehaviour{ protected float hp; protected float attack; protected float define; …...
【Java数据结构】单向 不带头 非循环 链表实现
模拟实现LinkedList:下一篇文章 LinkedList底层是双向、不带头结点、非循环的链表 /*** LinkedList的模拟实现*单向 不带头 非循环链表实现*/ class SingleLinkedList {class ListNode {public int val;public ListNode next;public ListNode(int val) {this.val …...
【ES6】模块化
nodejs遵循了CommonJs的模块化规范 导入 require() 导出 module.exports 模块化的好处: 模块化可以避免命名冲突的问题大家都遵循同样的模块化写代码,降低了沟通的成本,极大方便了各个模块之间的相互调用需要啥模块,调用就行 …...
腾讯云4核8G服务器可以用来干嘛?怎么收费?
腾讯云4核8G服务器适合做什么?搭建网站博客、企业官网、小程序、小游戏后端服务器、电商应用、云盘和图床等均可以,腾讯云4核8G服务器可以选择轻量应用服务器4核8G12M或云服务器CVM,轻量服务器和标准型CVM服务器性能是差不多的,轻…...
怎么在bash shell中操作复杂json对象
怎么在bash shell中操作复杂json对象 在bash shell中操作复杂JSON对象,jq可以帮助我们在bash环境下轻松地处理这类数据,本文将详细介绍如何使用jq在bash中操作复杂的JSON对象。 jq是一个轻量级且灵活的命令行JSON处理器,它允许你以非常高效的…...
11.div函数
文章目录 函数简介1.函数原型2.div_t结构体3.引用头文件 代码运行 函数简介 1.函数原型 div_t div(int numerator, int denominator);div函数把numerator除以denominator,产生商和余数,用一个div_t的结构体返回。 2.div_t结构体 typedef struct _div…...
windows11 MSYS2下载安装教程
MSYS2 可以理解为在windows平台上模拟linux编程环境的开源工具集 当前环境:windows11 1. 下载 官网地址可下载最新版本,需要科学上网 https://www.msys2.org/ 2. 安装 按照正常安装软件流程一路next就可以 打开 3. 配置环境 网上很多教程提到需…...
Excel+VBA处理高斯光束
文章目录 1 图片导入与裁剪2 获取图片数据3 数据拟合 1 图片导入与裁剪 插入图片没什么好说的,新建Excel,【插入】->【图片】。 由于图像比较大,所以要对数据进行截取,选中图片之后,点击选项卡右端的【图片格式】…...
如何启动若依框架
Mysql安装 一、下载 链接:https://pan.baidu.com/s/1s8-Y1ooaRtwP9KnmP3rxlQ?pwd1234 提取码:1234 二、安装(解压) 下载完成后我们得到的是一个压缩包,将其解压,我们就可以得到MySQL 5.7.24的软件本体了(就是一个文件夹)&…...
案例:CentOS8 在 MySQL8.0 实现半同步复制
异步复制 MySQL 默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主节点如果 crash 掉了,此时主节点上已经提交的事务可能并没有传…...
阿里云带宽计费模式怎么选?如何收费的?
阿里云服务器带宽计费模式分为“按固定带宽”和“按使用流量”,有什么区别?按固定带宽是指直接购买多少M带宽,比如1M、5M、10M、100M等,阿里云直接分配用户所购买的带宽值,根据带宽大小先付费再使用;按使用…...
c#记录几个问题
最近在看c#,有几个问题记录下 1)全局变量,其实是声明一个public static类,里面包含一些public static变量和函数,也就是在程序开始运行后就创生了一个对应的存储空间,调用时就要写明是谁的什么变量。针对的…...
第69讲后端登录逻辑实现
Admin实体: TableName("t_admin") Data public class Admin {TableId(type IdType.AUTO)private Integer id; // 编号private String userName; // 用户名private String password; // 密码TableField(select false)private String newPassword; // 新…...
Qt 字符串类应用与常用基本数据类型
目录 操作字符串 查询字符串 Qt 常见数据类型 操作字符串 创建一个控制台项目 (1)QString提供一个二元的 “” 操作符,主要用于组合两个字符串。QString str1 "Hello World 传递给QString一个 const char* 类型的ASCII字符串 “He…...
JAVA面试题15
当然,我可以提供给您一些常见的Java面试题及其答案。以下是一些示例: 什么是Java的四种基本数据类型? 答案:Java的四种基本数据类型是整型(byte、short、int、long)、浮点型(float、double&…...
git安装及使用
1、下载git 官网 Windows系统Git安装教程(详解Git安装过程) 官网打不开的话,可以使用镜像地址 镜像地址 2、使用git Git的下载、安装与使用(Windows) 30分钟带你精通git使用 3、注册github https://github.com/ 4、github文档 h…...
电力负荷预测 | Matlab实现基于LSTM长短期记忆神经网络的电力负荷预测模型(结合时间序列)
文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 电力负荷预测 | Matlab实现基于LSTM长短期记忆神经网络的电力负荷预测模型(结合时间序列) 所谓预测,就是指通过对事物进行分析及研究,并运用合理的方法探索事物的发展变化规律,对其未来发展做出预先估计和判断…...
力扣:455. 分发饼干
贪心解法思路: 1.先把两个数组按顺序遍历好,之后用最大的饼干来喂最大的胃口,如果最大的饼干不能喂饱最大的胃口,就除去这个最大的胃口,在剩下的为胃口中找最大的胃口来进行比对。这题主要历用了通过局部的优解&#…...
SpringCloud-项目引入Nacos
一、安装Nacos服务 首先,我们需要从 Nacos 的官方网站下载发布版本。下载地址:Releases alibaba/nacos GitHub 选择合适的版本并下载,解压缩得到 Nacos 的安装包。 在解压后的 Nacos 目录中,找到 bin 文件夹。 用写字板编辑…...
如何在 Windows 10/11 上恢复回收站永久删除的文件夹?
经验丰富的 Windows 用户将使用 Windows 备份和还原或文件历史记录来恢复不在回收站中的已删除文件夹。这些工具确实有助于 Windows 文件夹恢复,但并不总是有效。现在有许多专用的 Windows 数据恢复软件和免费解决方案可以替代它们,为 Windows 用户提供了…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
