之前分享了关于两点之间抛物线的“金手指”的实现方案,然后有朋友问我,一般情况下会给出速度,如何模拟自然的轨迹。
我一听这不是很容易实现么,根据之前的公式,得出两点之间时间恒定时,轨迹是确定的,也就是说平均速度是恒定。
那么反过来,在给定平均速度,然后再通过距离/速度,就可得出时间,那么轨迹也就确定了。
OK,我不多废话,直接上代码:
using UnityEngine; using System.Collections; public class PaoWuLine : MonoBehaviour { public float ShotSpeed = 10; private float time = 1;//代表从A点出发到B经过的时长 public Transform pointA;//点A public Transform pointB;//点B public float g = -10;//重力加速度 // Use this for initialization private Vector3 speed;//初速度向量 private Vector3 Gravity;//重力向量 private Vector3 currentAngle; void Start() { time = Vector3.Distance(pointA.position, pointB.position)/ShotSpeed; transform.position = pointA.position;//将物体置于A点 //通过一个式子计算初速度 speed = new Vector3((pointB.position.x - pointA.position.x) / time, (pointB.position.y - pointA.position.y) / time - 0.5f * g * time, (pointB.position.z - pointA.position.z) / time); Gravity = Vector3.zero;//重力初始速度为0 } private float dTime = 0; // Update is called once per frame void FixedUpdate() { Gravity.y = g * (dTime += Time.fixedDeltaTime);//v=at //模拟位移 transform.position += (speed + Gravity) * Time.fixedDeltaTime; currentAngle.x = -Mathf.Atan((speed.y + Gravity.y) / speed.z) * Mathf.Rad2Deg; transform.eulerAngles = currentAngle; } }
也可以在这个基础上修改为2d的,
①speed = new Vector3改为speed = new Vector2
②currentAngle.x = -Mathf.Atan中的currentAngle.x需要改为currentAngle.z
③(speed.y + Gravity.y) / speed.z)改为(speed.y + Gravity.y) / speed.x)
④currentAngle.z = -Mathf.Atan有时候需要改为currentAngle.z = Mathf.Atan
⑤public float ShotSpeed = 10;有是运行正常之后需要修改的主要参数,可能需要改为100等值,根据效果进行调整
⑥如果在①和②调整后,还有问题,可以考虑将(speed.y + Gravity.y) / speed.x改为(speed.x + Gravity.x) / speed.y
相关推荐
在Unity3D中,模拟炮弹的抛物线轨迹是一项常见的任务,尤其是在开发射击类游戏时。这个脚本,名为"ProjectileTest",是用于实现这一功能的一个实例。它通过计算角度和应用物理学原理来模拟炮弹的发射和飞行,使炮弹...
Unity 2D抛物线源码工程是一款专为2D游戏开发设计的代码示例,它利用Unity引擎的2D图形系统,展示了如何通过数学原理实现物体的抛物线运动。这个项目对于学习物理模拟、游戏开发以及Unity编程的新手来说,是一个很好...
在这个特定的项目“使用Unity物理实现规定抛物线击中目标功能 Unity2018”中,我们将探讨如何利用Unity的物理引擎来计算并实现一个精确的抛物线轨迹,以便在游戏中让物体(如炮弹或箭矢)从指定起点沿着特定的轨迹...
在Unity引擎中,物体运动轨迹的绘制是一项常用的技术,尤其在游戏开发或者模拟环境中,能够为玩家或用户提供更直观的视觉体验。本项目基于Unity 5.6.3 X64版本,旨在实现一个功能,即实时记录并展示场景中运动物体的...
在Unity3D中,创建抛物线形的3D模型是一种常见的需求,特别是在游戏开发中构建...需要注意的是,这种方法仅适用于创建静态的抛物线模型,如果需要实时模拟抛物线运动,可能需要结合Unity3D的物理引擎或其他运动学算法。
unity 生成网格线,用于移动轨迹,弹道,地图标注等
Vectrosity是一款强大的Unity插件,专用于在游戏场景中绘制线条、曲线和运动轨迹。它的版本v4.0.2确保了与Unity 4.0及更高版本的兼容性,为开发者提供了一套直观且功能丰富的工具集,用于创建各种视觉效果。 Unity...
抛物线运动是由重力加速度引起的,其轨迹是一条对称的抛物线。在二维空间中,我们可以用两个坐标轴(x和y)来表示小球的位置。小球的初始位置、初速度、重力加速度以及空气阻力等因素都会影响它的运动轨迹。 在...
本教程"unity新手抛物线大炮单例.zip"专为初学者设计,旨在教授如何利用Unity创建一个简单的抛物线大炮游戏,并且融入了单例模式的设计思想。 首先,我们来详细探讨Unity中的抛物线投射。在物理模拟中,大炮发射...
3. **物理模拟**:利用Unity的物理引擎来计算抛物线轨迹,这涉及到重力、速度和角度等概念。 4. **动画系统**:为了让瞬移看起来平滑,可能需要设计合适的过渡动画,如淡入淡出或旋转效果。 5. **碰撞检测**:确保...
在Unity3D中,我们可以通过设置初始速度和发射角度,结合重力常量,来计算箭矢的抛物线轨迹。 4. **预测路径**:为了准确地显示箭矢的飞行轨迹,可以先进行一次无重力的预测,计算出理想情况下的飞行路径。然后,再...
抛物线运动是物体在重力作用下的轨迹,通常表现为一个U形曲线。在动画设计中,模拟抛物线运动可以创造出自然、流畅的效果,使用户感觉物体在空间中的移动更加真实。 实现"加入购物车"的抛物线动画,通常需要以下...
7. **瞬移抛物线**:对于VR瞬移功能,可以利用类似的原理,但使用二次BezierCurve模拟抛物线轨迹。手柄释放时计算发射速度,结合重力和时间,更新抛物线的控制点,让物体沿着曲线移动到新的位置。 8. **优化性能**...
这里结合官方demo中的几个介绍这个插件的用法,其实很简单,学会后可以轻松拖出一条甚至多条复杂的轨迹,然后可以让物体沿着轨迹运动,更强大的是可以在轨迹上动态生成相应的赛道和轨道,可以控制刚体在轨道上自由...
在Unity3D游戏开发中,有时我们需要实现物体沿着抛物线轨迹移动的效果,例如射箭、投掷等。本文将详细解析一个简单的Unity3D抛物线脚本,该脚本名为`ProjectileTest`,主要涉及到游戏对象的位置、旋转、速度以及抛物...
在Unity项目中,贝塞尔曲线和Dotween的结合应用能实现动态、流畅的游戏对象运动。首先,贝塞尔曲线可以用来定义一个复杂的路径,比如角色移动的轨迹或物体飞行的路线。你可以通过设置四个控制点来创建一个三次贝塞尔...
在Unity3d中,有时我们需要实现一些动态的、视觉效果丰富的功能,比如画线。"Unity3d 画线插件"正是为了解决这一需求而存在的。这种插件能够帮助开发者在场景中绘制出各种复杂、酷炫的线条,增加游戏的视觉吸引力或...
在Unity3D(U3D)游戏开发过程中,物体运动轨迹的可视化是非常常见的需求,例如在愤怒的小鸟这样的游戏中,玩家需要看到抛物线轨迹来预判发射角度。使用LineRenderer组件可以方便地实现这一功能,它能动态地根据物体...
在Unity3D游戏开发中,摄像机轨迹的录制与播放是一项重要的功能,它允许开发者创建出流畅、动态的游戏视角变化,提升玩家的沉浸感。在本项目中,我们看到主要涉及的技术是C#编程语言以及Unity3D引擎的使用。下面我们...
unity测量线Measure+Line+1.3c unity 画线插件,知道两点的坐标可以在两点间画线