快速移动的球与鼠标控制的球拍的碰撞检测问题

2024-04-27

在统一中,我有一个应该击球的球拍,并且球拍直接由鼠标控制,即鼠标使用鼠标轴移动球棒并使用 translate() 函数移动球拍。

我预计 Unity3d 的物理特性不会直接通过鼠标正确地转换球拍的运动并相应地影响球,我必须编写一些自定义的内容,结果证明是正确的。

但是当球拍移动时,无法正确检测到球的碰撞。当它静止时,一切都很好,球的表现也如我所愿。

现在我编写了一个自定义物理脚本(我使用 C# 进行脚本编写),其中我将 4 个长度为 0.6F 的光线投射附加到球上,并在进行一些复杂的矢量计算后,计算球击中球拍后的速度,并使用rigidbody.velocity =calculateVelocity()将其直接应用于球的速度。现在,当球拍不移动时,它又可以正常工作,但当我移动球拍时,它就不能正常工作了。问题的确切(症状)是:

使用内置物理和碰撞检测:当球拍移动时,球有时会直接穿过球拍,有时会减慢速度(达到令人难以置信的水平)。

使用我的脚本计算速度:问题是相同的,但它让我在打印对撞机(球拍)的法线时确定出了什么问题。它有时给出正确的法线,有时给出法线向量的负值,这意味着它直接穿过顶面并检测对撞机(球拍)底侧的撞击。

我尝试过的事情:

  1. 增加对撞机的大小(它与球拍上更宽的盒子对撞机一起使用,但显然球从距离球拍很远的地方移动,我自己的脚本在这里工作,默认物理在球拍移动时给出奇怪的结果) ,总之我没有得到我想要的现实。

  2. 将固定时间戳减少到 0.001,这显着改善了情况,但离我想要的结果仍然非常非常远,而且球再次经常选择球的错误一侧。

  3. 将碰撞检测更改为连续动态。这也没有改善事情。

除了碰撞时选择错误的一侧之外,我观察到的另一个问题是,球从球拍弹起后,球在移动,但球拍移动得更快,它不是沿着完整的弧线或直线移动,而是以某种方式出现在前面球,导致两次击球。这是基于可见事物的推测。

此外,很明显,Unity3d 的内置物理系统没有读取球拍的“运动”方面,导致当使用鼠标击球移动球拍时会出现奇怪的行为。

我被困住了,我不知道该从这里搬到哪里。请告诉我我做错了什么。


正如其他人指出的那样,问题在于球从一个帧中位于垫的一侧变成了下一帧中的另一侧。如果障碍物太薄,快速移动的物体往往会这样做。

对于这个问题有三个非常简单的解决方案:

  • 增加垫或球的尺寸,这就是更改对撞机尺寸时发生的情况。
  • 确定球的最大速度,使其永远无法移动得足够快以穿过垫子。
  • 提高 Unity 进行物理计算的频率。它可以改变在时间经理 http://unity3d.com/support/documentation/Components/class-TimeManager.html,减小固定时间步长的值。请注意不要减少太多,否则物理引擎将无法在下一轮开始之前完成调用,并且永远无法赶上游戏。

设置移动物体的最大速度是必须始终完成的事情。你不能冒险让一个重要的物体在游戏过程中飙升,而让一切都处于不受控制的状态。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

快速移动的球与鼠标控制的球拍的碰撞检测问题 的相关文章

  • 使用cachedTextGenerator获取字母的正确位置

    考虑一个Text有许多文本段落 这很容易查找某个字符在哪里 using UI字符信息 http docs unity3d com ScriptReference UICharInfo html 例如 查找所有换行符 TextGenerato
  • 获取单位圆上 (0, 0) 处的随机点

    我正在使用 Unity 和 C 并且想编写一个函数 以 0 0 单位圆上随机点的 Vector2 形式返回 x 和 y 坐标 好像有一个功能UnityEngine Random insideUnitCircle 得到单位圆内的随机点 有Un
  • Hololens-无法连接到设备

    我意识到这个问题在其他地方被问过 但答案似乎直接针对 Hololens 和 PC 之间的配对过程 这是我的问题的一部分 我在 Unity 中制作了一个应用程序并导出到 Visual Studio 当我尝试在 Hololens 上运行它时 出
  • 在速度和距离不一致和/或有噪声的向量之间平滑地进行调整

    我正在可视化一级方程式赛车中提供的 GPS 数据 并尝试以动画方式显示它们在路径上的位置 Formula 1 API 提供矢量坐标和时间戳 但时间戳各不相同 它们的更新时间大约在 100 到 400 毫秒之间 timestamp x y z
  • UV 展开运行时优化

    我正在尝试在运行时创建 UV 我使用 BOX 类型 UV 类似于 3ds max 中的 BOX UVW 并基于面方向进行计算 我知道将其创建为运行时不是一个好的选择 但我别无选择 它是在计算后保存的 所以我做了一次 但我花了 40 秒处理
  • Unity - 在生成时获取随机颜色

    我有一个小问题 我想在我的场景中生成四边形 它们都应该有红色或绿色作为材质 但 Random Range 函数只能是 int 我该如何解决它 void SpawningSquadsRnd rndColor 0 Color red rndCo
  • 使用 Unity 在 C# 中发送 http 请求

    如何使用 Unity 在 C 中发送 HTTP GET 和 POST 请求 我想要的是 在post请求中发送json数据 我使用Unity序列化器 所以不需要 新的 我只想在发布数据中传递一个字符串并且能够 将 ContentType 设置
  • Android UnityPlayerActivity 操作栏

    我正在构建一个 Android 应用程序 其中包含 Unity 3d 交互体验 我已将 Unity 项目导入 Android Studio 但启动时该 Activity 是全屏的 并且不显示 Android 操作栏 我怎样才能做到这一点 整
  • 当我“绘制”线条时,如何将点平均分配到 LineRenderer 的宽度曲线?

    我正在使用线条渲染器创建一个 绘图 应用程序 现在我尝试使用线条渲染器上的宽度曲线启用笔压 问题在于 AnimationCurve 的 时间 值 水平轴 从 0 标准化为 1 因此我不能在每次添加位置时都在其末尾添加一个值 除非有一个我不知
  • 使用 Unity 在 iOS 应用程序上发送电子邮件时出错

    我正在开展一个学校项目 我正在尝试记录从我统一制作的游戏中存储的数据 我的问题是我想通过电子邮件将数据发送到应用程序 一切正常 电子邮件与数据一起发送等 但是当我将应用程序构建到 iOS 设备时 它不会发送电子邮件 我在 Unity 中没有
  • Unity c# 四元数:将 y 轴与 z 轴交换

    我需要旋转一个对象以相对于现实世界进行精确旋转 因此调用Input gyro attitude返回表示设备位置的四元数 另一方面 这迫使我根据这个四元数作为默认旋转来计算每个旋转 将某些对象设置为朝上的简单方法如下 Vector3 up I
  • 不明确的 OpenGL 默认相机位置

    在我的Opengl程序中 在我应用透视投影矩阵之前 每当我绘制一些对象时 我都会在世界坐标系的原点处绘制它 但是几乎所有Opengl教程都指出相机 我的投影视图 位于原点朝向正 z 轴 这取决于您稍后如何处理投影矩阵中的 z 值 但是如果这
  • Unity 中图像的 onClick 事件

    是否可以在 Unity 中将 onClick 功能添加到图像 画布的组件 var obj new GameObject Image NewImage obj AddComponent
  • 在unity3D中显示数学方程

    我想使用它的 GUI 系统统一显示数学方程 有办法吗 我正在使用 C 语言在 Unity 中进行编程 如果我还可以使用 C 代码显示数学符号 这对我来说会很有用 谢谢 自 2016 年起 您可以使用TEXDraw https assetst
  • 统一的阿拉伯语输入字段

    有没有办法将输入字段的语言统一更改为阿拉伯语 我尝试了ArabicSupport 它正确显示了阿拉伯语 但将其与输入字段一起使用却不起作用 因为 GameObject Find input field GetComponent
  • CommandInvokationFailure:Unity 远程要求检查失败

    所以我目前正在构建一个android游戏 我使用Unity Hub安装了Android SDK和JDK文件 我想在我的手机上尝试这个游戏并下载了Unity Remote 5 但是当我尝试在Unity中玩它时 它只是给了我这个错误 Comma
  • Unity遥控器5不工作

    我尝试运行 Unity Remote 但是当我在 Unity 编辑器中按下播放时 我的手机上没有任何反应 我认为我需要做的不仅仅是将手机与电脑连接 将编辑器设置为任何 Android 设备并按开始键 但这些是它所说的唯一内容 它根本不起作用
  • RealityKit – 在特定点向实体添加力量

    我有我的实体 它也有物理我用if let syntax if let scoot scooter as HasPhysics 这就像魅力一样 我可以通过使用让用户点击UITapGestureRecognizer这只是我想使用的第一次迭代sw
  • Unity wiki 的 Singleton 是如何工作的?

    我的场景中有一个 经理 游戏对象 其中有一个Manager附加到它的脚本组件 我需要这个Manager脚本成为单例因为有多个经理是没有意义的 我使用了单例实现来自 Unity 维基 http wiki unity3d com index p
  • 加速球之间的碰撞检测

    我正在编写一个物理引擎 模拟器 其中包含 3D 太空飞行 行星 恒星引力 船舶推力和相对论效应 到目前为止 一切进展顺利 但是 我需要帮助的一件事是碰撞检测算法的数学 我使用的运动迭代模拟基本上如下 注意 3D 矢量全部大写 For eac

随机推荐

  • 如何在 Windows 8.1 中的 anaconda(python3.6) 中构建 cython pyx 到 pyd?

    我参考了一些网站在 Windows 8 1 中将 pyx 构建为 pyd 我正在使用带有 Spyder IDE 的 Anaconda Distribution 我已经开发了 pyx 文件 但无法在 Anaconda 命令提示符 中构建 水蟒
  • 使用 tkinter + pyhook 时冻结。两个事件循环和多线程

    我正在用 python 2 7 编写一个工具 记录用户按下键盘或鼠标按钮的次数 点击次数将显示在屏幕左上角的一个小黑框中 即使另一个应用程序处于活动状态 该程序也会记录点击 除非我将鼠标移到框上 否则它工作正常 然后鼠标冻结几秒钟 然后程序
  • 我们如何使用 StringBuilder 在字符串前面添加字符串?

    我知道我们可以使用附加字符串StringBuilder 有没有一种方法可以使用前置字符串 即在字符串前面添加字符串 StringBuilder这样我们就可以保持性能优势StringBuilder offers 使用位置参数设置为 0 的 i
  • 将 Base64 字符串转换为 JPG

    我正在得到图像为 base64 字符串 dataurl 下面是我的函数 它将dataurl进入图像 现在 如果图像是 png 则 png 库将创建图像 而 jpg 库将引发错误 反之亦然 问题是当我上传 png 时效果很好 但是当我上传 j
  • 从 LINQ to SQL 升级到 EF 4.1 时,如何最大限度地减少性能损失?

    我最近将一个使用 LINQ to SQL 和 SQL Server CE 3 5 的应用程序更新为 Entity Framework 4 1 Code First 和 SQL Server CE 4 0 现在它的运行速度明显变慢 我在之前和
  • 如何在 spring 中将模型作为重定向属性传递

    redirectModel addAttribute Model model return REDIRECT PREFIX my company organization management manage users 当我通过这个时 我得
  • 带权重的欧几里得距离

    我目前正在使用SciPy计算欧氏距离 dis scipy spatial distance euclidean A B 在哪里 A B是5维位向量 现在工作正常 但是如果我为每个维度添加权重 是否仍然可以使用 scipy 我现在拥有的 sq
  • Django i18n 和 python 语言环境(和日期)

    我一直在使用 Django 的 i18n 系统 它似乎大部分工作正常 然而 模型代码中的日期似乎引起了问题 我使用 datetime strftime 填充一些 CHOICES 元组 然后在表单中使用它们 据我了解 django 会将语言环
  • 如何在navigationStart路由器事件中暂停路线更改

    在我的应用程序中 我有从包 节点模块 公开的路由 因此 我无法将 canActivate 或 canDeactivate 用于节点模块内定义的路由 因此 我开始订阅应用程序组件中的所有路线更改 并根据条件将用户重定向到不同的路线 由于条件有
  • PEX协议(磁力链接)如何找到它的第一个IP?

    我试图了解磁力链接如何工作 因为我读过他们使用 DHT 和 PEX 来获取对等点 但如果我是网络中的新节点 如何才能找到仅具有哈希值的对等点文件 它不是总是需要一个到已知主机的链接吗 Thanks Bittorrent DHT 可以通过多种
  • 如何阻止 Apache CXF 发送响应消息?

    如果给定的 SOAP 标头元素具有给定值 例如 如果标头标记 response 的值为 0 我根本不希望 Apache CXF 返回响应 我怎样才能做到这一点 CXF 似乎假设所有呼叫都会收到响应 我知道这在 Web 服务上下文中看起来很奇
  • 如何在生产环境中运行 spring boot 可执行 jar?

    Spring Boot 的首选部署方法是通过内部包含 tomcat 的可执行 jar 文件 它是从一个简单的开始java jar myapp jar 现在 我想将该 jar 部署到 EC2 上的 Linux 服务器上 我是否遗漏了某些内容
  • 如何在 Bullet 物理引擎中对物体应用旋转?

    我有旋转值 滚动 俯仰 偏航 我想将这种旋转应用于身体 但我不知道该怎么做 最直接的方法是通过运动状态或直接设置来直接设置刚体的世界变换 要获得横滚 俯仰和偏航的变换 您可以使用 btRigidBody rigidBody btTransf
  • 检查变量是否为 double 数据类型

    我需要检查我拥有的变量是否属于该数据类型double 这是我尝试过的 try double price Convert ToDouble txtPrice Text catch FormatException MessageBox Show
  • cs0030:无法生成临时类

    我有一个 Web 服务 当我尝试生成它的对象时 出现以下错误 无法生成临时类 结果 1 错误 CS0030 无法将类型 ShortSell ShortSellRQOriginDestinationInformationFlightSegme
  • 消息通知产生“此内容无法显示”

    我正在通过网络挂钩向 Slack 发送消息 使用单个 文本 JSON 元素的消息通知可通过适用于 OS X 和 iOS 的 Slack 应用程序生成正确的通知文本 频道中的消息文本也是正确的 但是 当使用新的 阻止 方法时 通知文本变为 无
  • 发布时错误元数据文件dll无法找到CSC

    我有一个 Visual Studio 解决方案 其中包含多个项目 特别是 DotNet5 asp net 应用程序 其中有多个 netstandard 2 0 引用 它在调试器中构建并运行良好 但不断抛出元数据错误 它不断特别引用在 net
  • 谷歌分析 SDK iOS10

    我已经从 cocoa pod 版本 3 14 安装了 Google Analytics id
  • 如何在Spring boot中使用注释来使用参数解析器?

    我想用argument resolvers在 Spring 启动中 我该怎么办 它是在 XML 中完成的 如下所示
  • 快速移动的球与鼠标控制的球拍的碰撞检测问题

    在统一中 我有一个应该击球的球拍 并且球拍直接由鼠标控制 即鼠标使用鼠标轴移动球棒并使用 translate 函数移动球拍 我预计 Unity3d 的物理特性不会直接通过鼠标正确地转换球拍的运动并相应地影响球 我必须编写一些自定义的内容 结