『功能项目』怪物受击的动画事件【10】

我们打开上一篇09着色器光透魔法球的项目,

本章要做的事情是在场景中创建一个怪物对象,当怪物被主角的魔法球击中后播放受击动画效果,此类技术用到动画事件帧,在动画上创建脚本。

首先打开资源商店选择一个免费资源的怪物模型加载至项目中

将导入包的熊Bear资源模型Prefab放置场景中

完全解压缩

创建一个怪物熊的动画状态机

命名为MonsterBearAC

在新建动画状态机中填入动画

添加线的参数

创建线

设直线

创建返回线

拖拽动画状态机

创建一个脚本MonsterBear.cs

编写脚本

using UnityEngine;
public class MonsterBear : MonoBehaviour{
    int hp;
    public int Hp {
        get { return hp; }
        set { hp = value; }
    }
    Animator animator;
    void Start(){
        Init();
    }
    void Init() {
        hp = 300;
        animator = GetComponent<Animator>();
    }
    void OnTriggerEnter(Collider other){
        if (other.CompareTag("Damage")) {
            Destroy(other.gameObject);
            transform.LookAt(GameObject.FindGameObjectWithTag("Player").
                transform.position + new Vector3(0, 0.3f, 0));
            animator.SetTrigger("HitTrigger");
        }
        if (hp <= 0){
            Destroy(gameObject);
        }
    }
}
将脚本挂载至场景中的怪物熊对象身上 并增加两个组件 

这里增加Box Collider组件与Rigidbody组件是因为为了激活OnTriggerEnter(Collider other)函数

OnTriggerEnter(Collider other)函数被激活的条件是有两个碰撞器,其中一个要打开触发器也就是勾选Collider下的IsTrigger,且两个物体发生碰撞时需要其中一个物体具有刚体组件Rigidbody

同样我们需要在发生碰撞的魔法球预制体中添加Collider并勾选触发器IsTrigger

对Resources包下的Sphere对象增加一个标签Tag

命名为Damage后保存

将Damage标签挂至魔法球Prefab预制体身上

运行项目后控制主角发射魔法球击中怪物熊后,即可实现怪物熊受击效果的实现

但这时我们要实现的效果,

接下来我们要在怪物熊的受击动画上挂在一个脚本,让怪物熊实现受击后退的效果,并在血量低于0后播放死亡动画后在场景中消除。

首先我们找到怪物熊的动画状态机

强调一下要选中同样的动画剪辑

接下来展开Event添加事件

点击之后可以向右滑动添加一个动画事件帧

我们如果想在具体动画的哪个位置增加动画事件帧可以向上拖拽动画播放视频

点击运行与暂停就可以固定我们想在动画哪个位置建立动画事件帧了

重命名动画事件帧名字

点击Apply应用

我们在脚本中增加一个刚刚添加动画事件帧的名字

我们不想怪物在被主角血量消减至0以下触发销毁的效果,

我们想当怪物血量低于0时先触发死亡动画,过3秒后再被消除,则我们需要在怪物熊动画状态机中添加一个死亡动画。

修改脚本

using System.Collections;
using UnityEngine;
public class MonsterBear : MonoBehaviour{
    int hp;
    Rigidbody rb;
    public int Hp {
        get { return hp; }
        set { hp = value; }
    }
    Animator animator;
    void Start(){
        Init();
    }
    void Init() {
        hp = 300;
        animator = GetComponent<Animator>();
        rb = GetComponent<Rigidbody>();
    }
    void OnTriggerEnter(Collider other){
        if (other.CompareTag("Damage")) {
            transform.LookAt(GameObject.FindGameObjectWithTag("Player").
                transform.position + new Vector3(0, 0.3f, 0));
            animator.SetTrigger("HitTrigger");
            Destroy(other.gameObject);
        }
        if (hp <= 0){
            animator.SetTrigger("DieTrigger");
            StartCoroutine(Delay3s());
        }
    }
    public void HitAnimEvent() {
        rb.AddForce(-transform.forward * 5,ForceMode.Impulse);
        hp -= 200;
    }
    IEnumerator Delay3s() {
        yield return new WaitForSeconds(3.5f);
        Destroy(gameObject);
    }
}
运行项目

当怪物熊受击后会播放受击动画并且血量减少并被击退一段距离

当怪物被击中后血量低于0后会播放死亡动画过三秒后消失

本篇只实现了怪物受击的动画事件功能,接下来还需做以下内容:

1.怪物被击退时显示击退图标的效果

2.怪物UI信息血量显示(笼)

3.怪物死亡特效

4.怪物死亡掉落物品

5.掉落物品拾取后的转移与穿戴

6.异步传送转换场景

7.目标点巡航功能

以及开放回合制、坐骑系统、宠物系统、背包系统、神炼系统、商城系统、Boss的目标跟随任务导航系统以及UI播放3D动画效果等等。

具体项目运行效果请关注water1024的b站视频项目演示《破碎纪元》

【Unity回合2.5D】破碎纪元_单机游戏热门视频 (bilibili.com)icon-default.png?t=N7T8https://www.bilibili.com/video/BV1rZY4e9Ebs/?spm_id_from=333.999.0.0&vd_source=547091a95b03acfa8e8a9e46ef499cd6

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

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

相关文章

apache httpclient速成

目录标题 快速使用连接池参数连接池状态清除闲置连接evictIdleConnections删除过期连接 timeToLive 和evictExpiredConnections 注意释放内存关闭流 http和netty的关系 导入依赖 <dependency><groupId>org.apache.httpcomponents.client5</groupId><artif…

【ceph学习】S3权限认证部分

认证过程简介 认证的过程是一个对用户信息进行解析并且判断前后得到的秘钥是否一致的过程。 auth_regitry的创建 在rgw_main.cc:main()中进行初始化auth_registry对象 /*rgw_main.cc*/ /* Initialize the registry of auth strategies which will coordinate * the dynamic…

浏览器中的开源SQL可视化工具:sqliteviz

sqliteviz&#xff1a; 在浏览器中&#xff0c;即刻开启数据可视化之旅。- 精选真开源&#xff0c;释放新价值。 概览 sqliteviz是一个专为数据可视化而设计的单页离线优先PWA&#xff0c;它利用了现代浏览器技术&#xff0c;让用户无需安装任何软件即可在本地浏览器中进行SQL…

WxPython可视化编辑器

作者&#xff1a;陈炳强 WxPython是python的一个用来写桌面程序的模块,目前只写了小部分功能跟组件, 用Python写中文&#xff0c;非常方便&#xff01; 下载地址&#xff1a;https://pan.quark.cn/s/ba19b2472246

大模型提示词工程技术2-设计有效的提示词技巧、角色与上下文在提示中的应用

大模型提示词工程技术2-设计有效的提示词技巧、角色与上下文在提示中的应用。《大模型提示词工程技术》的作者&#xff1a;微学AI&#xff0c;这是一本专注于提升人工智能大模型性能的著作&#xff0c;它深入浅出地讲解了如何通过优化输入提示词来引导大模型生成高质量、准确的…

19.神经网络 - 线性层及其他层介绍

神经网络 - 线性层及其他层介绍 1.批标准化层–归一化层&#xff08;不难&#xff0c;自学看官方文档&#xff09; Normalization Layers torch.nn — PyTorch 1.10 documentation BatchNorm2d — PyTorch 1.10 documentation 对输入采用Batch Normalization&#xff0c;可…

美发店会员系统设计解读之规格选择-SAAS本地化及未来之窗行业应用跨平台架构

一、请求产品信息 $.ajax({type:"get", //请求方式async:true, //是否异步url:"服务器",dataType:"json", //跨域json请求一定是jsonpjsonp: "cwpd_showData_dy_spec", //跨域请求的参数名&#xff0c;默认是callback//js…

从学习到工作,2024年不可或缺的翻译助手精选

翻译工具利用先进的机器学习和自然语言处理技术&#xff0c;能够迅速将一种语言的文档转换为另一种语言&#xff0c;极大地促进了信息的无障碍流通。接下来&#xff0c;我们将介绍几款功能强大、操作简便的类似deepl翻译的工具&#xff0c;帮助你轻松应对各种翻译需求。 第一款…

pymysql cursor使用教程

Python之PyMySQL的使用&#xff1a; 在python3.x中&#xff0c;可以使用pymysql来MySQL数据库的连接&#xff0c;并实现数据库的各种操作&#xff0c;本次博客主要介绍了pymysql的安装和使用方法。 PyMySQL的安装 一、.windows上的安装方法&#xff1a; 在python3.6中&…

基于SpringBoot的校园闲置物品交易管理系统

基于SpringBootVue的校园闲置物品交易管理系统【附源码文档】、前后端分离 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 摘要 基于SpringBoot与Vue的校…

Linux驱动开发—创建总线,创建属性文件

文章目录 1.什么是BUS&#xff1f;1.1总线的主要概念1.2总线的操作1.3总线的实现 2.创建总线关键结构体解析2.1注册总线到系统2.2 struct bus_type *bus 解析 3.实验结果分析1. devices 目录2. drivers 目录3. drivers_autoprobe 文件4. drivers_probe 文件5. uevent 文件 4.在…

vscode远程连接服务器并根据项目配置setting.json

vscode连接好远程服务器&#xff0c;打开项目文件&#xff0c;按下快捷键&#xff1a;CtrlShiftP 搜索setting.json 这边可以看到不同范围的setting.json&#xff0c;这边以文件夹&#xff08;项目&#xff09;为单位&#xff0c;即在打开的文件夹内创建setting.json&#xff…

axure9树形元件节点的添加

树形元件 | AxureChina 在需要添加节点处右键添加->添加子节点

World of Warcraft [CLASSIC][80][Grandel] Call to Arms: Strand of the Ancients

Call to Arms: Strand of the Ancients - Quest - 魔兽世界怀旧服CTM4.34《大地的裂变》数据库_大灾变85级魔兽数据库_ctm数据库 Call to Arms: Strand of the Ancients 战斗的召唤&#xff1a;远古海滩 打掉最后一个门【古代圣物之厅】&#xff0c;人跳进去就赢了 拿【炸弹】…

SpringBoot集成kafka-监听器注解

SpringBoot集成kafka-监听器注解 1、application.yml2、生产者3、消费者4、测试类5、测试 1、application.yml #自定义配置 kafka:topic:name: helloTopicconsumer:group: helloGroup2、生产者 package com.power.producer;import com.power.model.User; import com.power.uti…

UnQLite:多语言支持的嵌入式NoSQL数据库深入解析

文章目录 1. 引言2. Key/Value 存储接口2.1 关键函数2.2 使用示例2.3 高级操作&#xff1a;批量文件存储 3. 游标的使用4. UnQLite-Python使用示例4. UnQLite数据库引擎架构5.1 Key/Value存储层5.2 文档存储层5.3 可插拔的存储引擎5.4 事务管理器与分页模块5.5 虚拟文件系统 6.…

游戏开发设计模式之模板方法模式

目录 模板方法模式在游戏开发中的具体应用案例是什么&#xff1f; 如何在不同类型的游戏&#xff08;如角色扮演游戏、策略游戏等&#xff09;中实现模板方法模式&#xff1f; 模板方法模式与其他设计模式&#xff08;如观察者模式、状态模式等&#xff09;相比&#xff0c;…

物联网平台与边缘计算平台,ThingsKit与AIoTedge

物联网平台和边缘计算平台是现代智能系统中不可或缺的组成部分&#xff0c;它们共同支撑着设备的连接、数据的收集和智能分析等功能。ThingsKit和AIoTedge是两个专注于不同层面的平台&#xff0c;它们各自具有独特的特点和优势。 ThingsKit是一个运行在云端的通用物联网平台&am…

深度学习项目实践——qq聊天机器人(transformer)(一)原理介绍

文章目录 首先第一步——QQ是如何实现实时聊天数据传输过程1. 用户发送消息的开始2. 数据封装与加密3. 建立连接&#xff1a;WebSocket协议的应用4. 消息的传输过程5. 接收者获取消息6. 双向通信与实时性保障7. 保持连接与断线重连 第二步——聊天机器人是如何来接管QQ账号的组…

论文阅读笔记:RepViT: Revisiting Mobile CNN From Vit Perspective

文章目录 RepViT: Revisiting Mobile CNN From Vit Perspective动机现状问题 贡献实现Block设置独立的token融合器和通道融合器减少膨胀并增加宽度 宏观设计stem的早期卷积简单分类器整体阶段比率 微观设计内核大小选择Squeeze-and-excitation层放置网络架构 实验ImageNet-1K上…