使用统一的初始脉冲在抛物线路径上移动 2D 物理体

2023-12-30

我拥有的:

Unity 5 2D 中的一个射弹,受重力影响,我想以抛物线路径上的初始冲量从 A 点移动到 B 点

我知道的:

  • 随机起始位置的二维坐标 (A)
  • 随机目标位置的二维坐标(B)
  • 我希望身体到达目标位置的时间(X)

我想知道的是:

  • 我必须一次向身体施加初始脉冲(如统一 applyforce 和 forcemode 脉冲),以便它在 X 时间后到达所需的位置 B。

Notes:

  • 这是一个使用 Unity 2D 物理的 2D 世界
  • 两个位置 A 和 B 是完全随机的,并且可能或可能不处于相同的高度(y 坐标)
  • 我只想在产生射弹时施加一次脉冲
  • 除了重力之外,射弹没有任何其他力影响他(对于当前问题,我们假设它的震级始终为 9.8)

Here is a (bad) drawing of what I want :D enter image description here

先谢谢各位了!


让我们解决一些更简单的问题。我们的目标是找到粒子的初始速度,而不是“脉冲”,因为这样我们可以实现更好的控制。

首先,考虑在没有 Unity 物理的情况下我们如何解决这个问题。粒子的位置作为时间的函数取决于其初始位置、速度和加速度。无论有多少维,都适用相同的方程。这个方程是:

current_position = 1/2 * acceleration * time^2 + velocity * time + starting_position

Let current_position成为我们向往的目的地,time是您选择的旅行持续时间,以及starting_position为粒子的起始位置。

在 x 维度上,没有加速度。让X_0是我们的起始 X 位置,X_1是我们的目的地,并且T是我们想要到达目的地的时间长度。我们想要找到v_x,或 x 维度上的速度。为了便于解释,我将所有常量标记为大写,变量标记为小写。

  1. X_1 = v_x*T + X_0
  2. v_x = (X_1-X_0)/T

在 y 维度中,我们有某种重力。因此,让我们将其合并为我们的加速度:

  1. Y_1 = 0.5*G*T*T + v_y*T + Y_0
  2. v_y = (Y_1 - Y_0 - 0.5*G*T*T)/T

现在你已经v_x and v_y,只需设置速度:

rigidbody2d.velocity = new Vector2(v_x, v_y);

由于不同的物体具有不同的质量,因此您不想尝试计算冲量。只需在生成对象时将速度设置为帧中所需的速度即可。

这与您在互联网上其他地方找到的建议相反,但是先尝试一下在做更复杂的事情之前。

一些重要的注意事项:

  • Unity 中的物理处理不稳定:您可能会在不同平台上得到不同的结果,尤其是在不同的移动设备之间。如果存在性能压力,物理评估可能会减少,从而导致结果不正确。对于二维物理来说,这通常不是问题。
  • 您可能会遇到重力尺度问题,具体取决于您的版本以及您拥有的其他设置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用统一的初始脉冲在抛物线路径上移动 2D 物理体 的相关文章

  • 在代码中添加一个定时器,然后循环它

    尝试找到一种方法将计时器添加到我的代码中 然后用计时器不断循环它 例如 尝试通过单击按钮来制作物品 然后等待 5 秒以使其制作 然后只要我有材料 它就会自动开始再次制作 依此类推 我环顾四周的教程 但未能找到我一直在寻找的东西 这是我想要循
  • 如何使弹丸转弯时带有弧线

    我有一门大炮 可以以抛物线弧线发射子弹 现在 当我发射子弹时 子弹的旋转速度与从大炮中发射时的旋转速度相同 如何使子弹在空气中飞行时沿着弧线旋转 我尝试了以下作为在项目符号上运行的脚本 附件1 public class PointingBe
  • Unity3d 和 System.Xml.Linq

    因此 即使 Unity Editor Data Mono lib mono 2 0 System Xml Linq dll 文件存在 也会执行以下操作 using System Xml Linq 生成以下错误 命名空间 System Xml
  • 如何在编辑器中将动画曲线更改为线性?

    我向轮子添加了旋转动画 但轮子旋转不顺畅 我发现原因是因为旋转动画的曲线不是线性的 然而 在尝试了编辑器中的几乎所有按钮和选项后 我找不到使动画曲线成为线性的方法 有谁知道如何在统一编辑器中获取带有线性曲线的动画 我自己找到了解决方案 而且
  • unity3d - 加速度计灵敏度

    我正在 Unity3D 4 3 中测试加速度计代码 我想做的就是在倾斜 ipad 的同时简单地改变物体角度 以像真实生活一样伪造视角 一切工作正常 除了加速计有点太敏感 即使我把它放在桌子上 我也可以看到游戏对象在闪烁 如何让它不那么敏感
  • 从 Unity 中调用浏览器上的 javascript 字符串函数返回 null

    我有一个 WebGL unity 项目 它尝试在浏览器上执行 javascript 代码并返回一个值 我有以下内容 jslib我的 Assets Plugins WebGL 文件夹中的文件 var BrowserPlugin GetEndp
  • Unity3D 中 android 切换速度太慢

    我的游戏有 1000 多个帧 并且精灵的格式是 Crunch 因为这个项目中的精灵太多 当我想从Windows切换到Android时 我花了将近1天的时间来切换 实际上我不允许它完全切换 但切换到Windows并没有那么多 也许只有15分钟
  • R从原始数据生成二维直方图

    我有一些 2D x y 的原始数据 如下所示 我想从数据生成二维直方图 通常 将 x y 值划分为大小为 0 5 的 bin 并计算每个 bin 中出现的次数 同时针对 x 和 y 有什么办法可以做到这一点吗 gt df x y 1 4 2
  • 我无法在 Unity Hub 中激活许可证

    我重新安装了视窗 10 我从官方网站下载了 Unity Hub 运行 unity hub 我看到错误 您没有有效的许可证 错误上有 2 个按钮 管理许可证 和 关闭 我单击 管理许可证 进入 Unity 中心设置中的 许可证管理 页面 单击
  • 查找椭圆或贝塞尔曲线上的等距点

    目前我正在编写 JavaScript 代码 将对象放置在屏幕上的椭圆上 我试图找到能够解决这个问题之一的算法 椭圆将是完美的 但如果它太昂贵 贝塞尔曲线也可以 抱歉 但不幸的是我的数学不允许我使用我找到的答案 https mathoverf
  • Unity构建错误

    所以我制作了我的游戏并尝试构建它 我收到一些对我来说毫无意义的错误 这是错误 UnityEditor BuildPlayerWindow BuildMethodException 2 个错误 在 UnityEditor BuildPlaye
  • 从 Unity WebGL 调用 Angular2 函数

    目前 我正在使用 Angular2 版本 2 1 2 和 Unity 可视化工具 使用 Unity 5 5 构建 我需要做的是从 Unity 到 Angular2 进行通信 我正在使用类似于下面的代码 public void GetBill
  • Unity3D:在 AA 解析后绘制粒子以提高性能

    我正在尝试评估 MSAA 对 Unity 中含有大量粒子的场景的影响 为此 我需要 使用 8x MSAA 绘制场景中的所有非粒子对象 使用上一个通道中解析的深度缓冲区来渲染所有 将非遮挡粒子系统转移到较小的渲染目标上 将 2 的颜色缓冲区与
  • 与 firebase 集成的 Unity 可在 Unity 编辑器上运行,但不适用于移动设备

    我在 Unity 2020 3 0 f1 上创建了一个简单的应用程序 集成了 Firebase sdk 7 1 0 我基本上是在对 firebase 进行简单的读写 尽管 apk 构建 100 成功 但它在 Unity 编辑器中运行良好 但
  • 为什么 Resources.Load 返回 null?

    我的项目有多个精灵 位于 Assets Sprites 中 我想使用 C 脚本加载它们 我已经测试过这个 Sprite myFruit Resources Load
  • XNA 2D 矢量角度 - 正确的计算方法是什么?

    在 2D 中的 XNA 中矢量角度的标准工作方式是什么 向右 0 度 向上 90 度 向左 180 度 向下 270 度 什么是 标准 实现 float VectortoAngle Vector2 vec and Vector2 Angle
  • HTML5 - 创建画布视口

    我有一个 2D 数组 宽 30 下 20 然而 视口仅绘制横向 15 和向下 10 的内容 我最初有一个这样的游戏 我一直在努力实现这样的目标 这是我的小提琴 http jsfiddle net sTr7q http jsfiddle ne
  • 如何解码 U.P.S.来自 UPS MaxiCode 条形码的信息?

    我最近购买了一个二维条形码阅读器 扫描 U P S 时条形码 我得到了大约一半我想要的信息 其中大约一半看起来以某种方式加密了 我听说有一个 UPS DLL 示例 粗体的所有内容似乎都已加密 而非粗体文本包含有价值的合法数据 gt 0196
  • 仅使用 GRPC 连接到对话流 StreamingDetectIntent,卡在等待 responseStream.MoveNext

    我正在尝试将 DialogFlow API v2 与 Unity 结合使用 由于 Unity 还没有官方 SDK 所以我使用了 Grpc beta unity SDK 以及使用 Grpc 工具中的 Protobuf 和 protoc 创建的
  • Android UnityPlayerActivity 操作栏

    我正在构建一个 Android 应用程序 其中包含 Unity 3d 交互体验 我已将 Unity 项目导入 Android Studio 但启动时该 Activity 是全屏的 并且不显示 Android 操作栏 我怎样才能做到这一点 整

随机推荐

  • Javascript 即时创建

    我有一个与此类似的链接 a href home category blog 1 Blog a 如您所见 该链接的 ID 为 博客 我想要做的是使用所单击的链接中的 ID 动态创建一个 div 因此如果单击 博客 则标记将为 div div
  • Identity Server 4 无限循环

    我正在开发一个 asp net core 2 1 项目 其中安装了身份服务器 4 用户使用实体框架存储在 SQL 数据库中 Web 项目有一个登录页面和登录成功后的仪表板 请在 Startup cs 中找到以下代码 public class
  • 如何将图像从 Parse 加载到 UIImageView (iOS)

    我可能会问一些非常简单的问题 但我无法找到对我有帮助的教程或示例 我已经学会了如何从 Parse 检索字符串数据 现在我正在尝试检索图像 认为这会更容易 但我无法弄清楚 我正在尝试加载 1 张图像 我每天都会更改 UIImageView 从
  • Firebase - 'pushWithPriority' - 和验证

    我真的很想 优先推动 但这不存在 所以我计划进行不带参数的推送 然后使用返回的引用进行 setWithPriority 与文档中的示例类似 var messageListRef new Firebase https samplechat f
  • 可以在没有模拟器的情况下运行 Azure 缓存预览版吗?

    我们在应用程序中使用一些 Azure 特定功能 主要是 Blob 存储 借助 Blob 存储 我们弄清楚了如何在不需要运行缓慢的 Azure 模拟器的情况下运行它 我们现在正在试验 Azure 缓存预览版 它做了一些非常酷的事情 并且可以帮
  • 无法在同一类 JS 的另一个方法中调用方法

    我试图在同一类的方法 connect 中调用方法 test 但我得到的只是 未捕获类型错误 无法读取未定义的属性 测试 如何访问 sftp 回调内的任何变量 为什么会这样呢 这是我的代码 const SSH2 require ssh2 Cl
  • 在 Iphone SDK 中更改 Web 视图的字体大小

    我已经实现了提要解析并以字符串形式获取内容 现在 我正在通过它以编程方式制作 html 文件 在 Web 视图中加载该 HTML 我的网络视图是表视图单元格中的子视图 但现在我想更改网页视图内容的字体大小 以便用户可以看到一些细节 我的 H
  • 文件上传网站上应该避免使用“坏”文件扩展名?

    我正在重写一个文件托管站点 并且我希望能够托管每种文件类型 而不是仅仅拥有允许扩展名的 while 列表 我正在运行 nginx 和 linux 网站是用 php 构建的 我会禁用 php 文件的上传 但除此之外 还有什么我应该注意的吗 以
  • Springboot Wildfly 10部署错误jdk.unsupported module not found

    我有一个使用 Java 1 8 的 Spring Boot v2 项目 当我尝试在 Wildfly 10 上部署我的 Spring Boot 项目时 我不断收到此错误 19 12 25 295 ERROR org jboss as cont
  • 图像坐标到世界坐标opencv

    我使用 opencv 校准了我的单色相机 现在我知道相机的相机固有矩阵和畸变系数 K1 K2 P1 P2 K3 K4 K5 K6 假设相机位于 x y z 位置并进行 Roll Pitch Yaw 旋转 当相机看着地板 z 0 时 如何获取
  • 如何加速mysql中的Haversine公式?

    作为一个业余爱好项目 我开始为一家公司制作一个网站 我在为网站编写复杂代码方面不是很先进 但我想尝试一下 我有一个来自荷兰的邮政编码数据库 其中包含超过 471000 条记录 我使用半正矢公式查找 13 公里半径内有哪些邮政编码 然后从数据
  • Tweepy 速率限制/分页问题。

    我组装了一个小型 Twitter 工具来提取相关推文 以便稍后在潜在语义分析中进行分析 讽刺的是 这一点 更复杂的一点 工作得很好 问题在于拉动推文 我正在使用下面的代码来设置它 这在技术上是有效的 但没有达到预期 items 200 参数
  • AngularJS ui 路由器在没有 URL 的状态之间传递数据

    我面临着在两个状态之间传递数据而不暴露 url 中的数据的问题 就像用户无法真正直接登陆这个状态一样 例如 我有两个状态 A 和 B 我正在状态 A 进行一些服务器调用并传递调用的响应 陈述 B 服务器调用的响应是一条字符串消息 它很长 所
  • 在 ng-repeat 中加载背景图像时显示加载屏幕

    我已经加载了一个列表ng repeat其中每个元素包含一个img标签 我想显示某种加载指示器 包括列表项 直到每个项目中的每个图像都完成加载 我想我需要加入角度广播的一些事件back img指令 但我真的不知道从哪里开始 好的 所以我解决了
  • 为多对多关系的组合设计 SQL 模式(产品的变体)

    我希望标题能有点帮助 我使用 MySQL 作为我的数据库 我正在构建产品数据库 但不确定如何处理产品变体的存储价格 SKU 产品可能有无限的变体 并且每个变体组合都有自己的价格 SKU 等 这就是我目前设置产品 变体表的方式 PRODUCT
  • Java字符串初始化

    你更偏向于哪个 为什么 String myString null if someCondition myString something else myString something else OR String myString if
  • 假货组件未生成

    我不知道我需要做什么才能生成假货 在我的测试项目中 我包含了对我想要伪造的程序集的引用 它将 Fakes fakes 添加到我的项目中并构建了该项目 有大量警告 但错误数为 0 并且构建成功完成 但它没有添加对生成的 Fakes 程序集的任
  • BATCH - 移动超过 5 分钟的文件

    我想制作一个移动可执行文件 时间超过5分钟 不知道如何比较文件的修改日期与系统日期 echo off for f in log do move nf log Procesados exit 一种方法是下载查找工具 http gnuwin32
  • 如何使用 Rails 3.0.x 配置 Log4r?

    我尝试根据这篇文章使用Rails 3 0 4配置log4r http www dansketcher com 2007 06 16 integrating log4r and ruby on rails http www dansketch
  • 使用统一的初始脉冲在抛物线路径上移动 2D 物理体

    我拥有的 Unity 5 2D 中的一个射弹 受重力影响 我想以抛物线路径上的初始冲量从 A 点移动到 B 点 我知道的 随机起始位置的二维坐标 A 随机目标位置的二维坐标 B 我希望身体到达目标位置的时间 X 我想知道的是 我必须一次向身