已知目的地,高度差,重力

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 抛物线 弹道(一)相关推荐

  1. Unity 抛物线 弹道(三)终结篇

    1.得到曲线上的点坐标 WIKI地址 public static Vector2[] ProjectileArcPoints(int iterations, float speed, float di ...

  2. unity抛物线_发射弓箭轨迹的实现

    无论是愤怒的小鸟,还是弓箭发射功能,亦或者模拟炮弹受重力影响等抛物线轨迹,都可以使用本文的方法,模拟绝对真实. 和往常一样,先说原理.就是抛物运动,在垂直方向上做加速度运动,在水平方向上,做匀速运动. ...

  3. Unity 抛物线,直线,Sine曲线等

    1.用粒子制作抛物线. 1.创建一个枚举 public enum FunctionOption {Linear,Exponential,Parabola,Sine} 2.创建静态方法 //直线 pri ...

  4. 高超声速武器及其拦截系统(一):高超声速武器的发展

    最近在研究美利坚的区域高超声速反导计划,里面提到用SM-6作为海基末段反导核心,接下来介绍一下高超和反高超的一些研究. 高超音速武器源自于本世纪初美军提出的"一小时打遍全球"概念, ...

  5. Unity3D 通过初速度和加速度实现物体曲线运动

    1. 本代码实现了3D环境中物体朝着任意方向曲线运动.本质是通过物体的初速度向量和加速度向量来控制物体的运动,lifetime控制物体的飞行时间,currentAngle 控制物体的旋转角度 usin ...

  6. Unity实用案例之——“吃鸡”手雷弹道模拟

    最近吃鸡游戏火啊,至今也吃了好几晚的鸡了,无奈手雷就是丢不准,从窗户丢雷丢几个弹出几个,各种误伤自己人--而别人家的手雷: 一般的游戏里手雷都是盲投,不过一般游戏也不会对弹道有这么精确的要求,尽管往敌 ...

  7. 【用Unity实现抛物线向目标点发射炮弹功能】

    用Unity实现抛物线向目标点发射炮弹功能 游戏开发中经常会涉及到制作向特定的目标点投掷物体的功能,比如:塔防类.射击类.即时战斗类游戏-等等,首先需要明确的一点是,要打中目标点,发射的角度.发射点与 ...

  8. 【Unity】 结合DoTween制作抛物线效果

    [Unity] 结合DoTween制作抛物线效果 概要 public partial class EMath {public static Vector3 Parabola(Vector3 start ...

  9. unity 模拟抛物线

    具体的步骤: 了解使用 水平方向的速度是:v1=v0×cosθ 竖直方向的速度是:v2=v0×sinθ-gt y=v0×t-(gt^2)/2 克隆线段,坐标信息,线段的长度,线段的间距. 检测碰撞的点 ...

最新文章

  1. 从零点五开始用Unity做半个2D战棋小游戏(四)
  2. 同时渲染两个世界:恐怖游戏《灵媒》背后的尖端技术
  3. HTTP 301 跳转和302跳转的区别
  4. linux网络编程:使用多进程实现socket同时收发数据
  5. 湖南省第六届大学生计算机程序设计竞赛---数字整除
  6. deepnode处理过的图片_微信图文排版用什么软件?文章图片大小不一样排版不齐怎么办?...
  7. 帕累托分布(Pareto distributions)、马太效应
  8. 助你提高PS效率的32个常用快捷键及对应作用
  9. 台式计算机上的fn键是哪个,电脑键盘上Fn键到底有什么用?
  10. 大麻和烟草对表观基因组产生双重影响
  11. 【EasyUse】一键式检索框-界面美化参考。MFC自绘对话框加图和Button
  12. mac 修改idea 占用内容_mac 上 Idea 运行时占满 CPU怎么解决?
  13. mysql表id的数据类型是_MySQL表中的数据类型
  14. 戴尔电脑如何下载c语言,EqualLogic PS6000:戴尔的突破、机遇和挑战
  15. 【cocos2d-x入门实战】微信飞机大战之十四:背景音乐和音效
  16. asp.net 页面清除缓存
  17. python学习笔记(BMR计算器)
  18. ACW734. 能量石
  19. IDEA Maven工程出现org.codehaus.plexus.component.repository.exception.ComponentLookupException错误
  20. Apriltag原理简介及源代码

热门文章

  1. 1m=1000ms(1秒等于一千毫秒)
  2. vue.cli3.0版本的用axios调用本地JSON数据报404解决方法
  3. 有未经处理的异常 0xC00000FD Stack overflow (参数: 0x00000000, 0x00842000)
  4. 如何在JS中计算扑克牌中的顺子、对子、半顺、豹子、杂六
  5. Developpeur Reference对Bjarne Stroustrup的采访(转载)
  6. StringIO cStringIO
  7. 基础矩阵和极点、极线关系
  8. Tomcat7 部署CGI程序
  9. Kotlin use函数的魔法
  10. 使用Win7 PE安装Win 7原版系统图解