`

unity抛物线,平均速度下的运动轨迹

 
阅读更多

之前分享了关于两点之间抛物线的“金手指”的实现方案,然后有朋友问我,一般情况下会给出速度,如何模拟自然的轨迹。

我一听这不是很容易实现么,根据之前的公式,得出两点之间时间恒定时,轨迹是确定的,也就是说平均速度是恒定。

那么反过来,在给定平均速度,然后再通过距离/速度,就可得出时间,那么轨迹也就确定了。

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炮弹抛物线轨迹脚本1

    在Unity3D中,模拟炮弹的抛物线轨迹是一项常见的任务,尤其是在开发射击类游戏时。这个脚本,名为"ProjectileTest",是用于实现这一功能的一个实例。它通过计算角度和应用物理学原理来模拟炮弹的发射和飞行,使炮弹...

    Unity 2D抛物线源码工程

    Unity 2D抛物线源码工程是一款专为2D游戏开发设计的代码示例,它利用Unity引擎的2D图形系统,展示了如何通过数学原理实现物体的抛物线运动。这个项目对于学习物理模拟、游戏开发以及Unity编程的新手来说,是一个很好...

    使用Unity物理实现规定抛物线击中目标功能 Unity2018

    在这个特定的项目“使用Unity物理实现规定抛物线击中目标功能 Unity2018”中,我们将探讨如何利用Unity的物理引擎来计算并实现一个精确的抛物线轨迹,以便在游戏中让物体(如炮弹或箭矢)从指定起点沿着特定的轨迹...

    绘制unity中物体运动的轨迹

    在Unity引擎中,物体运动轨迹的绘制是一项常用的技术,尤其在游戏开发或者模拟环境中,能够为玩家或用户提供更直观的视觉体验。本项目基于Unity 5.6.3 X64版本,旨在实现一个功能,即实时记录并展示场景中运动物体的...

    Unity3D教程:抛物线的画法1

    在Unity3D中,创建抛物线形的3D模型是一种常见的需求,特别是在游戏开发中构建...需要注意的是,这种方法仅适用于创建静态的抛物线模型,如果需要实时模拟抛物线运动,可能需要结合Unity3D的物理引擎或其他运动学算法。

    unity 网格面片生成抛物线,折线

    unity 生成网格线,用于移动轨迹,弹道,地图标注等

    Vectrosity.v4.0.2 兼容所有unity4.0以上 unity 画线插件 直线 曲线 运动轨迹

    Vectrosity是一款强大的Unity插件,专用于在游戏场景中绘制线条、曲线和运动轨迹。它的版本v4.0.2确保了与Unity 4.0及更高版本的兼容性,为开发者提供了一套直观且功能丰富的工具集,用于创建各种视觉效果。 Unity...

    网页设计小球做抛物线运动

    抛物线运动是由重力加速度引起的,其轨迹是一条对称的抛物线。在二维空间中,我们可以用两个坐标轴(x和y)来表示小球的位置。小球的初始位置、初速度、重力加速度以及空气阻力等因素都会影响它的运动轨迹。 在...

    unity新手抛物线大炮单例.zip

    本教程"unity新手抛物线大炮单例.zip"专为初学者设计,旨在教授如何利用Unity创建一个简单的抛物线大炮游戏,并且融入了单例模式的设计思想。 首先,我们来详细探讨Unity中的抛物线投射。在物理模拟中,大炮发射...

    htc vive 利用抛物线移动(HTC Vive Teleportation System with Parabolic Pointer)

    3. **物理模拟**:利用Unity的物理引擎来计算抛物线轨迹,这涉及到重力、速度和角度等概念。 4. **动画系统**:为了让瞬移看起来平滑,可能需要设计合适的过渡动画,如淡入淡出或旋转效果。 5. **碰撞检测**:确保...

    箭的抛物线轨道

    在Unity3D中,我们可以通过设置初始速度和发射角度,结合重力常量,来计算箭矢的抛物线轨迹。 4. **预测路径**:为了准确地显示箭矢的飞行轨迹,可以先进行一次无重力的预测,计算出理想情况下的飞行路径。然后,再...

    加入购物车动画带抛物线效果

    抛物线运动是物体在重力作用下的轨迹,通常表现为一个U形曲线。在动画设计中,模拟抛物线运动可以创造出自然、流畅的效果,使用户感觉物体在空间中的移动更加真实。 实现"加入购物车"的抛物线动画,通常需要以下...

    Unity 实现VR手柄射线对物体操作拖拽时曲线效果

    7. **瞬移抛物线**:对于VR瞬移功能,可以利用类似的原理,但使用二次BezierCurve模拟抛物线轨迹。手柄释放时计算发射速度,结合重力和时间,更新抛物线的控制点,让物体沿着曲线移动到新的位置。 8. **优化性能**...

    Curvy为unity场景快速生成运动轨迹

    这里结合官方demo中的几个介绍这个插件的用法,其实很简单,学会后可以轻松拖出一条甚至多条复杂的轨迹,然后可以让物体沿着轨迹运动,更强大的是可以在轨迹上动态生成相应的赛道和轨道,可以控制刚体在轨道上自由...

    Unity3D脚本:抛物线脚本1

    在Unity3D游戏开发中,有时我们需要实现物体沿着抛物线轨迹移动的效果,例如射箭、投掷等。本文将详细解析一个简单的Unity3D抛物线脚本,该脚本名为`ProjectileTest`,主要涉及到游戏对象的位置、旋转、速度以及抛物...

    unity 贝塞尔曲线和Dotween配合的具体应用

    在Unity项目中,贝塞尔曲线和Dotween的结合应用能实现动态、流畅的游戏对象运动。首先,贝塞尔曲线可以用来定义一个复杂的路径,比如角色移动的轨迹或物体飞行的路线。你可以通过设置四个控制点来创建一个三次贝塞尔...

    Unity3d 画线插件

    在Unity3d中,有时我们需要实现一些动态的、视觉效果丰富的功能,比如画线。"Unity3d 画线插件"正是为了解决这一需求而存在的。这种插件能够帮助开发者在场景中绘制出各种复杂、酷炫的线条,增加游戏的视觉吸引力或...

    解决U3D中物体运动轨迹线与打包后轨迹不同的问题

    在Unity3D(U3D)游戏开发过程中,物体运动轨迹的可视化是非常常见的需求,例如在愤怒的小鸟这样的游戏中,玩家需要看到抛物线轨迹来预判发射角度。使用LineRenderer组件可以方便地实现这一功能,它能动态地根据物体...

    C# unity3d 摄像机轨迹录制及播放

    在Unity3D游戏开发中,摄像机轨迹的录制与播放是一项重要的功能,它允许开发者创建出流畅、动态的游戏视角变化,提升玩家的沉浸感。在本项目中,我们看到主要涉及的技术是C#编程语言以及Unity3D引擎的使用。下面我们...

    unity测量线Measure+Line+1.3c

    unity测量线Measure+Line+1.3c unity 画线插件,知道两点的坐标可以在两点间画线

Global site tag (gtag.js) - Google Analytics