有限状态机(续)

一、添加刀光和场景

1、资源链接:

武器刀光:https://assetstore.unity.com/packages/tools/particles-effects/melee-weapon-trail-1728

场景:https://assetstore.unity.com/packages/3d/environments/fantasy/casual-tiny-environment-jungle-set-169765

2、实现原理

(1)场景

在地板上添加一个盒装控制器,取消网格材质

在场景中的四周添加网格碰撞器

(2)刀光

将光效的脚本覆盖之前的拖尾脚本

设置一个起点和终点

在代码中更改API

二、摄像机震动(击打效果)

1、unity设置

创建一个空物体作为父级,管理所有的子级摄像机

添加一个振动监听

同时需要一个脚本挂在到被监听的对象身上

在代码中选择旧版种类

使用6Dshake 下面的两个值是振动的强度

2、代码调用

在控制层写这个方法

//屏幕震动
public void ScreenImpulse()
{impulseSource.GenerateImpulse();
}

 在武器层调用这个方法

三、摄像机碰撞

添加一个虚拟摄像机的扩展功能,增加摄像机碰撞器

一般调整摄像机半径,可以实现较好的效果;

图层要选择所有,使摄像机与所有的图层碰撞;

设置一个与fllowPos点的目标距离 0.5合适;


四、命中效果(屏幕后处理)

1、添加后处理文件

五、相机平滑位移(Dotween)

使用Dotween插件和Cinemachine插件共同实现

在模型层增加一个动画事件,调用这个摄像机的位移方法

在玩家层增加这个摄像机位移方法

在配置层定义这个相机位移的数据,并且这个位移效果可能有多个,所以是一个数组

1、配置层

// 一次摄像机位移的全部数据
[Serializable]
public class CameraMoveModel
{//相机要偏移的程度public Vector3 Target;//多久偏移,平滑时间(速度)public float Time;//回归时间public float BackTime;
}

2、玩家层

声明两个变量

在start中,先获取摄像机目标的位置,转化为一个v3类型的

然后把这个位置的本地坐标赋值给摄像机坐标

写一个相机位移的方法并且接收三个参数,对应配置中的三个参数

调用Dotween插件中的方法

先位移摄像机的位置加上一个偏移值,然后使用Lamboo表达式委托,执行回到原来的位置

//基于攻击的相机移动
public void CameraMoveForAttack(Vector3 offset,float time,float backTime)
{//花time的时间去到offset的位置//经过backTime时间回归到cameaPos的位置cameraTarget.DOLocalMove(camerPos + offset, time).onComplete = () =>{cameraTarget.DOLocalMove(camerPos, backTime);};
}

3、模型层

因为配置中是一个数组的形式,所以在这里接收一个index

然后在SO配置文件里面写入第几个这里就会传入几

然后调用这个方法,并且传入参数

六、角色平滑位移 

不使用Dotween来进行移动的原因是:UCC在移动时会有碰撞,不会穿模

与摄像机平滑移动差不多

角色的移动要使用CharacterController

1、配置层


// 一次角色位移的全部数据
[Serializable]
public class CharacterMoveModel
{//角色要偏移的程度public Vector3 Target;//多久偏移,平滑时间(速度)public float Time;
}

2、玩家层

使用协程来调用攻击移动方法;

注:协程传参数修改的原因是,v3会导致移动方向相反,应该使用自身的坐标方向

3、模型层

调用玩家层的方法,可以看作是一个动画事件

这里面调用方法传入的参数,就是配置SO中的设置

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

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

相关文章

内网安全隧道搭建-ngrok-frp-nps-sapp

1.ngrok 建立内网主机与公网跳板机的连接: 内网主机为客户机: 下载客户端执行 2.frp

模电数电,融会贯通

模电与数电在传统电子工程中似乎被划分为两大领域,然而,它们实际上是对同一器件的不同应用方法。这种观念有助于我们理解元器件在各种工作状态下的多样性,并在复杂的电路设计中实现更高效的系统集成。 一、三极管的多重身份:放大…

鸿蒙动画开发07——粒子动画

1、概 述 粒子动画是在一定范围内随机生成的大量粒子产生运动而组成的动画。 动画元素是一个个粒子,这些粒子可以是圆点、图片。我们可以通过对粒子在颜色、透明度、大小、速度、加速度、自旋角度等维度变化做动画,来营造一种氛围感,比如下…

Java——并发工具类库线程安全问题

摘要 本文探讨了Java并发工具类库中的线程安全问题,特别是ThreadLocal导致的用户信息错乱异常场景。文章通过一个Spring Boot Web应用程序示例,展示了在Tomcat线程池环境下,ThreadLocal如何因线程重用而导致异常,并讨论了其他并发…

PostgreSQL技术内幕18:物理备份工具pg_basebackup

0.简介 PG自带备份工具有多种,pg_basebackup、pg_dump、pg_dumpall,其中pg_basebackup是文件系统级别的备份,其余两种是逻辑备份。本文主要介绍PG备份工具产生的背景和概念,以及对pg_basebackup使用方法和其实现原理进行详细说明…

基于Python实现的HDR图像处理算法

此代码会读取两张图片,一张用于保留高光细节,另一张用于保留暗部细节。两张图片按指定比例进行像素融合,最终生成一张合成的HDR图片。 import cv2 import numpy as npdef hdr_fusion(highlight_img_path, shadow_img_path, output_path, alp…

计算机网络-理论部分(二):应用层

网络应用体系结构 Client-Server客户-服务器体系结构:如Web,FTP,Telnet等Peer-Peer:点对点P2P结构,如BitTorrent 应用层协议定义了: 交换的报文类型,请求or响应报文类型的语法字段的含义如何…

【JavaEE初阶 — 多线程】wait() notify()

1. 协调多个线程之间的执行先后顺序的方法介绍 由于线程之间是抢占式执行的,因此线程之间执行的先后顺序难以预知;但是实际开发中,有时候我们希望合理地协调多个线程之间的执行先后顺序。 拓展: wait() 和 sleep() 的区别 …

Vscode/Code-server无网环境安装通义灵码

Date: 2024-11-18 参考材料:https://help.aliyun.com/zh/lingma/user-guide/individual-edition-login-tongyi-lingma?spma2c4g.11186623.0.i0 1. 首先在vscode/code-server插件市场中安装通义插件,这步就不细说了。如果服务器没网,会问你要…

Java项目实战II基于Java+Spring Boot+MySQL的共享汽车管理系统(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在共享经济…

美赛优秀论文阅读--2023C题

文章目录 1.题目说明2.我对于这个题目信息的理解3.优秀论文学习3.1摘要3.2相关的算法模型 4.总结 1.题目说明 今天阅读的这个文章来自于这个2023年的这个美赛的这个C题的论文; 我们的这个题目可以到网上去找,这个还是比较容易找到的,大致就…

ChromeDriver驱动下载地址更新(保持最新最全)

说明: ChromeDriver 是 Selenium WebDriver 用于控制 Chrome 的独立可执行文件。 为了方便下载使用,本文保持ChromeDriver的最新版本更新,并提供115.0.5763.0-133.0.6841.0版本的下载地址: 所有版本和下载地址: &am…

delphi fmx android 离线人脸识别

搜遍全网都没有找到delphi android 能用的 离线人脸识别,无需注册什么开发者 有这方面需求的可以用fsdk 这边用的luxand.FSDK8.0 android下的注册号要自己找下 1,用老猫的工具将android 下的sdk,FSDK.java 编译成FSDK.jar 老猫的工具 2,用上面的工具将FSDK.jar 生成de…

【模块一】kubernetes容器编排进阶实战资源对象之Configmap与Secret简介

kubernetes 资源对象详解及示例 kubernetes 的几个重要概念 资源对象:kubernetes基于声明式API,和资源对象进行交互。 yaml文件:为了方便后期管理,通过使用yaml文件通过API管理资源对象。 yaml必需字段: apiVersio…

游戏引擎学习第14天

视频参考:https://www.bilibili.com/video/BV1iNUeYEEj4/ 1. 为什么关注内存管理? 内存分配是潜在的失败点: 每次进行内存分配(malloc、new等)时,都可能失败(例如内存不足)。这种失败会引入不稳…

游戏引擎学习第12天

视频参考:https://www.bilibili.com/video/BV1yom9YnEWY 这节没讲什么东西,主要是改了一下音频的代码 后面有介绍一些alloc 和malloc,VirtualAlloc 的东西 _alloca 函数(或 alloca)分配的是栈内存,它的特点是: 生命周…

django——创建 Django 项目和 APP

2.创建 Django 项目和 APP 命令: 创建Django项目 django-admin startproject name 创建子应用 python manager.py startapp name 2.1 创建工程 在使用Flask框架时,项目工程目录的组织与创建是需要我们自己手动创建完成的。 在django中,…

OceanBase 分区表详解

1、分区表的定义 在OceanBase数据库中,普通的表数据可以根据预设的规则被分割并存储到不同的数据区块中,同一区块的数据是在一个物理存储上。这样被分区块的表被称为分区表,而其中的每一个独立的数据区块则被称为一个分区。 如下图所示&…

学习大数据DAY61 宽表加工

目录 模型设计 加工宽表 任务调度: 大表 - 把很多数据整合起来 方便后续的明细查询和指标计算 模型设计 设计 建模 设计: excel 文档去编写 建模: 使用建模工具 PowerDesigner Navicat 在线画图工具... 把表结构给绘 制出来 共享\项目课工具\pd 加工宽表 数…

uniapp微信小程序转发跳转指定页面

onShareAppMessage 是微信小程序中的一个重要函数,用于自定义转发内容。当用户点击右上角的菜单按钮,并选择“转发”时,会触发这个函数。开发者可以在这个函数中返回一个对象,用于定义分享卡片的标题、图片、路径等信息。 使用场…