Unity 抛物线 弹道(一)
已知目的地,高度差,重力
1.根据发射角度,求初速度
Wiki公式
推导出V
public static float LaunchSpeed(float distance, float yOffset, float gravity, float angle){float speed = (distance * Mathf.Sqrt(gravity) * Mathf.Sqrt(1 / Mathf.Cos(angle)))/ Mathf.Sqrt(2 * distance * Mathf.Sin(angle) + 2 * yOffset * Mathf.Cos(angle));return speed;}
2.根据发射速度,求角度
Wiki地址
注意根号不能为负数,也就是初始速度不足以到达目的地
求解会得到两个角度,一般都用小的角度
public static bool LaunchAngle(float speed, float distance, float yOffset, float gravity, out float angle0, out float angle1){angle0 = angle1 = 0;float speedSquared = speed * speed;float operandA = Mathf.Pow(speed, 4);float operandB = gravity * (gravity * (distance * distance) + (2 * yOffset * speedSquared));// Target is not in rangeif (operandB > operandA)return false;float root = Mathf.Sqrt(operandA - operandB);angle0 = Mathf.Atan((speedSquared + root) / (gravity * distance));angle1 = Mathf.Atan((speedSquared - root) / (gravity * distance));return true;}
3.得到飞行总时间
Wiki地址
public static float TimeOfFlight(float speed, float angle, float yOffset, float gravity){float ySpeed = speed * Mathf.Sin(angle);float time = (ySpeed + Mathf.Sqrt((ySpeed * ySpeed) + 2 * gravity * yOffset)) / gravity;return time;}
PS:我们需要把先distance投影到平面,注意GIF上的红线和白线
public static Vector3 ProjectVectorOnPlane(Vector3 planeNormal, Vector3 vector){return vector - (Vector3.Dot(vector, planeNormal) * planeNormal);}
标 准 结 局
Unity 抛物线 弹道(一)相关推荐
- Unity 抛物线 弹道(三)终结篇
1.得到曲线上的点坐标 WIKI地址 public static Vector2[] ProjectileArcPoints(int iterations, float speed, float di ...
- unity抛物线_发射弓箭轨迹的实现
无论是愤怒的小鸟,还是弓箭发射功能,亦或者模拟炮弹受重力影响等抛物线轨迹,都可以使用本文的方法,模拟绝对真实. 和往常一样,先说原理.就是抛物运动,在垂直方向上做加速度运动,在水平方向上,做匀速运动. ...
- Unity 抛物线,直线,Sine曲线等
1.用粒子制作抛物线. 1.创建一个枚举 public enum FunctionOption {Linear,Exponential,Parabola,Sine} 2.创建静态方法 //直线 pri ...
- 高超声速武器及其拦截系统(一):高超声速武器的发展
最近在研究美利坚的区域高超声速反导计划,里面提到用SM-6作为海基末段反导核心,接下来介绍一下高超和反高超的一些研究. 高超音速武器源自于本世纪初美军提出的"一小时打遍全球"概念, ...
- Unity3D 通过初速度和加速度实现物体曲线运动
1. 本代码实现了3D环境中物体朝着任意方向曲线运动.本质是通过物体的初速度向量和加速度向量来控制物体的运动,lifetime控制物体的飞行时间,currentAngle 控制物体的旋转角度 usin ...
- Unity实用案例之——“吃鸡”手雷弹道模拟
最近吃鸡游戏火啊,至今也吃了好几晚的鸡了,无奈手雷就是丢不准,从窗户丢雷丢几个弹出几个,各种误伤自己人--而别人家的手雷: 一般的游戏里手雷都是盲投,不过一般游戏也不会对弹道有这么精确的要求,尽管往敌 ...
- 【用Unity实现抛物线向目标点发射炮弹功能】
用Unity实现抛物线向目标点发射炮弹功能 游戏开发中经常会涉及到制作向特定的目标点投掷物体的功能,比如:塔防类.射击类.即时战斗类游戏-等等,首先需要明确的一点是,要打中目标点,发射的角度.发射点与 ...
- 【Unity】 结合DoTween制作抛物线效果
[Unity] 结合DoTween制作抛物线效果 概要 public partial class EMath {public static Vector3 Parabola(Vector3 start ...
- unity 模拟抛物线
具体的步骤: 了解使用 水平方向的速度是:v1=v0×cosθ 竖直方向的速度是:v2=v0×sinθ-gt y=v0×t-(gt^2)/2 克隆线段,坐标信息,线段的长度,线段的间距. 检测碰撞的点 ...
最新文章
- 从零点五开始用Unity做半个2D战棋小游戏(四)
- 同时渲染两个世界:恐怖游戏《灵媒》背后的尖端技术
- HTTP 301 跳转和302跳转的区别
- linux网络编程:使用多进程实现socket同时收发数据
- 湖南省第六届大学生计算机程序设计竞赛---数字整除
- deepnode处理过的图片_微信图文排版用什么软件?文章图片大小不一样排版不齐怎么办?...
- 帕累托分布(Pareto distributions)、马太效应
- 助你提高PS效率的32个常用快捷键及对应作用
- 台式计算机上的fn键是哪个,电脑键盘上Fn键到底有什么用?
- 大麻和烟草对表观基因组产生双重影响
- 【EasyUse】一键式检索框-界面美化参考。MFC自绘对话框加图和Button
- mac 修改idea 占用内容_mac 上 Idea 运行时占满 CPU怎么解决?
- mysql表id的数据类型是_MySQL表中的数据类型
- 戴尔电脑如何下载c语言,EqualLogic PS6000:戴尔的突破、机遇和挑战
- 【cocos2d-x入门实战】微信飞机大战之十四:背景音乐和音效
- asp.net 页面清除缓存
- python学习笔记(BMR计算器)
- ACW734. 能量石
- IDEA Maven工程出现org.codehaus.plexus.component.repository.exception.ComponentLookupException错误
- Apriltag原理简介及源代码
热门文章
- 1m=1000ms(1秒等于一千毫秒)
- vue.cli3.0版本的用axios调用本地JSON数据报404解决方法
- 有未经处理的异常 0xC00000FD Stack overflow (参数: 0x00000000, 0x00842000)
- 如何在JS中计算扑克牌中的顺子、对子、半顺、豹子、杂六
- Developpeur Reference对Bjarne Stroustrup的采访(转载)
- StringIO cStringIO
- 基础矩阵和极点、极线关系
- Tomcat7 部署CGI程序
- Kotlin use函数的魔法
- 使用Win7 PE安装Win 7原版系统图解