Unity贝塞尔曲线的落地应用-驱动飞行特效

前言

本文教你怎么用贝塞尔曲线驱动一个飞行特效

中间点的准备

开放一些可以给策划配置的变量

startPos = flyEffect.transform.position;
var right = (GetAimPoistion(targetActor) - flyEffect.transform.position).x > 0?1:-1;  
midPos = startPos + new Vector3(right*Mathf.Tan((angle*Mathf.PI)/180)*height,height,0);
public int angle = 45;//向上角度
public int height = 2;//飞行上浮高度

三次贝塞尔曲线是一种数学工具,可以用来描述一条平滑的曲线,它由四个控制点决定:起始点、终止点和两个中间点。起始点和终止点是曲线的端点,而中间点是用来调整曲线的形状和方向的。中间点越靠近起始点或终止点,曲线就越接近直线;中间点越远离起始点或终止点,曲线就越弯曲。

在这段代码中,midPos是一个中间点,它用来控制飞行效果的物体的移动轨迹。为了让物体沿着一条抛物线飞行,midPos需要满足以下条件:
• midPos的x坐标要和startPos的x坐标相差一个固定的值,这个值由right、angle和height决定。right是一个整数,表示物体飞行的方向,如果是正数,表示向右飞行;如果是负数,表示向左飞行。angle是一个角度,表示物体飞行的初始角度。height是一个高度,表示物体飞行的最高点。这三个变量可以在编辑器中调整,以改变物体飞行的效果。

• midPos的y坐标要等于startPos的y坐标加上height,这样就可以让物体飞到最高点。

• midPos的z坐标要等于startPos的z坐标,这样就可以让物体在同一个平面上飞行。

具体计算公式

开飞

if (triggered && !!flyEffect)  
{  removeEffect(_action);  return;  
}  float t = _localTime / costTime;  
t = Mathf.Clamp(t, 0, 1);  
if(t >= 1)  triggered = true;  var targetPos = GetAimPoistion(targetActor);  
flyEffect.transform.position = (1 - t) * (1 - t) * startPos + 2 *t* (1 - t) * midPos + t * t * targetPos;

• 首先,它检查了一个布尔变量triggered和一个对象变量flyEffect的值,如果triggered为真且flyEffect不为空,那么它就调用了一个函数removeEffect,用于移除飞行效果,并结束了这段代码的执行。

• 然后,它计算了一个浮点变量t,表示飞行效果的物体移动的进度,它的值是当前时间_localTime除以总时间costTime,然后用Mathf.Clamp函数将其限制在0到1之间。

• 接着,它判断了t是否大于等于1,如果是,就将triggered设为真,表示飞行效果已经完成。

• 最后,它调用了一个函数GetAimPosition,用于获取目标物体targetActor的位置,并将其赋值给一个向量变量targetPos。然后,它用一个三次贝塞尔曲线公式计算了飞行效果的物体的当前位置,并将其赋值给flyEffect.transform.position。这个公式使用了起始位置startPos、中间位置midPos和目标位置targetPos作为控制点,用t作为参数

什么是ObjectTemplate?

ObjectTemplate是一个用于在运行时创建对象的模板。它可以定义对象的属性和方法,以及对象与其他对象的关系。其实就是用来存特效的句柄,然后把特效存为GO飞出去。

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

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

相关文章

适配ADRC自抗扰控制算法的MFP450-ADRC 套件焕新而来

关注 FMT 开源自驾仪的开发者可能知道,早在 2018 年 7 月 FMT开源自驾仪的早期版本就已经实现了 ADRC 算法。 经过几年的发展,FMT 在自抗扰控制算法的适配上做了进一步的优化,为了方便科研工作者和开发者快速上手,我们针对搭载 F…

并发编程的故事——共享模型之内存

共享模型之内存 文章目录 共享模型之内存一、JVM内存抽象模型二、可见性三、指令重排序 一、JVM内存抽象模型 主要就是把cpu下面的缓存、内存、磁盘等抽象成主存和工作内存 体现在 可见性 原子性 有序性 二、可见性 出现的问题 t线程如果频繁读取一个静态变量,那…

解决Spring Data JPA中的NullPointerException问题

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

苹果为 Vision Pro 头显申请游戏手柄专利

苹果Vision Pro 推出后,美国专利局公布了两项苹果公司申请的游戏手柄专利,其中一项的专利图如下图所示。据 PatentlyApple 报道,虽然申请专利并不能保证苹果公司会推出游戏手柄,但是苹果公司同时也为游戏手柄申请了商标&#xff0…

性能优化维度

CPU 首先检查 cpu,cpu 使用率要提升而不是降低。其次CPU 空闲并不一定是没事做,也有可能是锁或者外部资源瓶颈。常用top、vmstat命令查看信息。 vmstat 命令: top: 命令 IO iostat 命令: Memory free 命令: 温馨提示&#xff1a…

postgresql-窗口函数

postgresql-窗口函数 简介窗口函数的定义分区选项(PARTITION BY)排序选项(ORDER BY)窗口选项(frame_clause) 聚合窗口函数排名窗口函数演示了 CUME_DIST 和 NTILE 函数 取值窗口函数 简介 常见的聚合函数&…

因果推断(六)基于微软框架dowhy的因果推断

因果推断(六)基于微软框架dowhy的因果推断 DoWhy 基于因果推断的两大框架构建:「图模型」与「潜在结果模型」。具体来说,其使用基于图的准则与 do-积分来对假设进行建模并识别出非参数化的因果效应;而在估计阶段则主要…

雅思写作 三小时浓缩学习顾家北 笔记总结(二)

目录 饥饿网一百句翻译 Using government funds for pollution cleanup work can create a comfortable environment. "Allocating government funds to pollution cleanup work can contribute to the creation of a comfortable environment." Some advertise…

ChatGPT的局限性及商业化应用限制讨论

首先,ChatGPT仅使用公开可用的信息,这是其第一个局限。如果基础信息缺失、过时、模糊或过于泛化,AI生成的内容就将不会准确。 只有在使用企业内部专有信息和知识创建特定的GPT时,才会出现真正的商业化解决方案。但对企业而言&…

Opencv基于文字检测去图片水印

做了一个简单的去水印功能,基于文字检测去图片水印。效果如下: 插件功能代码参考如下: using namespace cv::dnn; TextDetectionModel_DB *textDetector0; void getTextDetector() {if(textDetector)return;String modelPath "text_de…

【MySQL】3、MySQL的索引、事务、存储引擎

create table class (id int not null,name char(10),score decimal(5,2)); insert into class values (1,zhangsan,80.5); update class set namewangwu,passwd123 where id2; select * from class where id2; drop 索引的概念 是一种帮助系统,能够更快速的查询信…

es6·await/async案例笔记

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>await/async案例笔记</title> </head> …

【2023研电赛】安谋科技企业命题三等奖作品: 短临天气预报AI云图分析系统

本文为2023年第十八届中国研究生电子设计竞赛安谋科技企业命题三等奖分享&#xff0c;参加极术社区的【有奖活动】分享2023研电赛作品扩大影响力&#xff0c;更有丰富电子礼品等你来领&#xff01;&#xff0c;分享2023研电赛作品扩大影响力&#xff0c;更有丰富电子礼品等你来…

python爬虫14:总结

python爬虫14&#xff1a;总结 前言 ​ python实现网络爬虫非常简单&#xff0c;只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点&#xff0c;方便以后复习。 申明 ​ 本系列所涉及的代码仅用于个人研究与讨论&#xff0c;并不会对网站产生不好…

windows环境 pip安装mysqlclient失败问题记录及解决方案

1.问题记录 > pip install -i https://pypi.douban.com/simple mysqlclient Looking in indexes: https://pypi.douban.com/simple Collecting mysqlclientUsing cached https://pypi.doubanio.com/packages/50/5f/eac919b88b9df39bbe4a855f136d58f80d191cfea34a3dcf96bf5d…

137.只出现一次的数字

目录 一、题目 二、代码 一、题目 137. 只出现一次的数字 II - 力扣&#xff08;LeetCode&#xff09; 二、代码 class Solution { public:int singleNumber(vector<int>& nums) {int answer0;int count0;//用于计数for(int i0;i<32;i){count0;for(int j0;j&l…

基于SpringBoot+Vue的旅游系统

摘 要 随着旅游业的发展&#xff0c;越来越多的人选择旅游作为自己的出行方式。在旅游规划过程中&#xff0c;旅游景点选择是至关重要的环节。本文提出了一种基于协同过滤推荐算法的旅游平台系统。该系统采用前后端分离的设计&#xff0c;主要使用了SpringBoot、Vue等技术&…

深度探索JavaScript中的原型链机制

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责…

leetcode 365 水壶问题

有一个水壶容量或者两个水壶加起来总容量为目标容量 总共有八种选择&#xff1a;第一种倒满x,第二种倒满y,第三种清空x,第四种清空y,第五种x 倒给 y y能装满 &#xff0c;第六种 x 倒给 y x倒完, 。。。。 这里用深度遍历&#xff0c;时间超时 class Solution {public boole…

Jupyter lab 配置

切换jupyterlab的默认工作目录 在终端中输入以下命令 PS C:\Users\Administrator> jupyter-lab --generate-config Writing default config to: C:\Users\Administrator\.jupyter\jupyter_lab_config.py它就会生成JupyterLab的配置文件&#xff08;如果之前有这个文件的话…