项目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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/259808.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么有的代理IP速度比较慢?

“为什么有的IP代理速度比较慢&#xff1f;”随着数字化时代的不断发展&#xff0c;代理服务成为了许多网络操作的关键环节。然而&#xff0c;有时我们可能会遇到IP代理速度慢的问题&#xff0c;这可能会对我们的网络操作产生影响。让我们一起揭开这个谜团&#xff0c;探寻其中…

【JavaScript】面试手写题精讲之数组(下)

引入 这章主要讲的是数组的排序篇&#xff0c;我们知道面试的时候&#xff0c;数组的排序是经常出现的题目。所以这块还是有必要进行一下讲解的。笔者观察了下前端这块的常用算法排序题&#xff0c;大概可以分为如下 冒泡排–> 稳定排序插入排序–> 稳定排序选择排序–…

第五次作业:LMDeploy 的量化和部署

参考文档&#xff1a;https://github.com/InternLM/tutorial/blob/main/lmdeploy/lmdeploy.md 基础作业&#xff1a; 使用 LMDeploy 以本地对话、网页Gradio、API服务中的一种方式部署 InternLM-Chat-7B 模型&#xff0c;生成 300 字的小故事&#xff08;需截图&#xff09; …

MAC电脑系统清理空间免费版软件CleanMyMac X2024

大家好&#xff0c;我是那个总是被苹果电脑“内存已满”提示搞得焦头烂额的专业博主。如果你也像我一样&#xff0c;在使用Mac时经常遭遇卡顿、慢吞吞的情况&#xff0c;那么今天的Mac清理空间妙招分享绝对适合你&#xff01; CleanMyMac X全新版下载如下: https://wm.makedi…

【HTML】SVG实现炫酷的描边动画

前沿 今天闲来无事&#xff0c;看到Antfu大佬的个性签名&#xff0c;觉得还是非常炫酷的&#xff0c;于是也想要搞一个自己的个性签名用来装饰自己的门面&#xff0c;不过由于手写的签名太丑了&#xff0c;遂放弃。于是尝试理解原理&#xff0c;深入研究此等密法&#xff0c;终…

基于Springboot的新能源充电系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的新能源充电系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&a…

【开源】基于JAVA+Vue+SpringBoot的就医保险管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 科室档案模块2.2 医生档案模块2.3 预约挂号模块2.4 我的挂号模块 三、系统展示四、核心代码4.1 用户查询全部医生4.2 新增医生4.3 查询科室4.4 新增号源4.5 预约号源 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVue…

ZigBee学习——基于AF的数据通信

文章目录 一、简单描述符1.1 简单介绍1.2 简单描述结构体介绍1.3 结构体中的簇1.4 应用场景 二、AF通信原理2.1 通信过程2.2 端点号分类2.3 通信方式2.4 注册简单描述符 三、数据发送API简介3.1 AF层数据发送API3.2 基于AF层封装的通信API3.2.1 点对点通信API3.2.2 广播通信API…

Linux------环境变量

目录 前言 一、环境变量 二、添加PATH环境变量 三、HOME环境变量 四、查看所有环境变量 1.指令获取 2.代码获取 2.1 getenv 2.2main函数的第三个参数 2.3 全局变量environ 五、环境变量存放地点 六、添加自命名环境变量 七、系统环境变量具有全局属性 八、环境变…

Shiro-05-5 分钟入门 shiro 安全框架实战笔记

序言 大家好&#xff0c;我是老马。 前面我们学习了 web 安全之 Spring Security 入门教程 这次我们来一起学习下另一款 java 安全框架 shiro。 什么是Apache Shiro&#xff1f; Apache Shiro是一个功能强大且易于使用的Java安全框架&#xff0c;它为开发人员提供了一种直…

区块链技术和Hyperledger Fabric介绍

1 区块链介绍 1.1 区块链技术形成 1.1.1 起源 在比特币诞生之时&#xff0c;技术专家们开始研究比特币的底层技术&#xff0c;并抽象提取出来&#xff0c;形成区块链技术&#xff0c;或者称分布式账本技术。 1.1.2 定义 简称BT&#xff08;Blockchain technology&#xff…

8 款顶级开源漏洞扫描工具推荐

1.OpenVAS OpenVAS漏洞扫描器是一种漏洞分析工具&#xff0c;由于其全面的特性&#xff0c;可以使用它来扫描服务器和网络设备。这些扫描器将通过扫描现有设施中的开放端口、错误配置和漏洞来查找IP地址并检查任何开放服务。扫描完成后&#xff0c;将自动生成报告并以电子邮件形…

基于springboot的鞋类商品购物商城系统

文章目录 目录 文章目录 前言 一、功能设计 二、功能实现 2.1 后台功能 2.1.1 管理员登录界面 2.1.2 系统首页 2.1.3 会员管理 2.1.4 栏目管理 2.1.5 商品管理 2.1.6 评价管理 2.1.7 订单管理 2.2 前台功能 2.2.1 新用户注册登录 2.2.2 首页 2.2.3 商品分类 2.2.4 地址管理 2.2…

(AtCoder Beginner Contest 341)(A - D)

比赛地址 : Tasks - Toyota Programming Contest 2024#2&#xff08;AtCoder Beginner Contest 341&#xff09; A . Print 341 模拟就好了 &#xff0c; 先放一个 1 , 然后放 n 个 01 ; #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout…

Nature Chemical Engineering 威斯康星大学让机器人科学家做实验,自主设计全新蛋白质

【导读】这个自动化蛋白质设计系统可以自己设计和测试新的蛋白质&#xff0c;不需要人类的帮助。就像一个能自己做实验的机器人科学家。它能通过自主学习自行进行蛋白质设计&#xff0c;同时在实验室里自动进行测试。 AI Agent&#xff0c;已经可以不需要人类帮助&#xff0c;…

数据结构-邻接矩阵

介绍 邻接矩阵&#xff0c;是表示图的一种常见方式&#xff0c;具体表现为一个记录了各顶点连接情况的呈正方形的矩阵。 假设一共有以下顶点&#xff0c;其连接关系如图所示 那么&#xff0c;怎么表示它们之间的连接关系呢&#xff1f; 我们发现&#xff0c;各条边所连接的都…

7.1 Qt 中输入行与按钮

目录 前言&#xff1a; 技能&#xff1a; 内容&#xff1a; 参考&#xff1a; 前言&#xff1a; line edit 与pushbotton的一点联动 当输入行有内容时&#xff0c;按钮才能使用&#xff0c;并能读出输入行的内容 技能&#xff1a; pushButton->setEnabled(false) 按钮不…

django中的中间件

在Django中&#xff0c;中间件&#xff08;Middleware&#xff09;是一个轻量级的、底层的“插件”系统&#xff0c;用于全局地修改Django的输入或输出。每个中间件组件都负责执行一些特定的任务&#xff0c;比如检查用户是否登录、处理日志、GZIP压缩等。Django的中间件提供了…

Python安装GDAL库

目录 一、GDAL介绍 二、GDAL应用 三、python安装GDAL库 一、GDAL介绍 GDAL&#xff08;Geospatial Data Abstraction Library&#xff09;是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式&#xff0c;并且提供了一系列命令…

10分钟带你了解分布式系统的补偿机制

我们知道&#xff0c;应用系统在分布式的情况下&#xff0c;在通信时会有着一个显著的问题&#xff0c;即一个业务流程往往需要组合一组服务&#xff0c;且单单一次通信可能会经过 DNS 服务&#xff0c;网卡、交换机、路由器、负载均衡等设备&#xff0c;而这些服务于设备都不一…