平滑地朝目标对象旋转对象

2024-02-28

我想将我的玩家车辆旋转到目标对象方向/侧面。 通过下图,我试图以更好的方式解释我的观点:

我想将下面的坦克对象旋转到另一个坦克对象,以便它可以指向那个方向。

我为此目的编写了这段代码,但它不起作用:

IEnumerator DoRotationAtTargetDirection(Transform opponentPlayer)
{
    Quaternion targetRotation = Quaternion.identity;
    do
    {
        Debug.Log("do rotation");
        Vector3 targetDirection = opponentPlayer.position - transform.position;
        targetRotation = Quaternion.LookRotation(targetDirection);
        Quaternion nextRotation = Quaternion.Lerp(transform.localRotation, targetRotation, Time.deltaTime);
        transform.localRotation = nextRotation;
        yield return null;

    } while (Quaternion.Angle(transform.localRotation, targetRotation) < 0.01f);
}

我只想平稳地旋转并朝着目标物体停止。 请分享您对此的建议。

EDIT:

这是更新后的代码,仍然不起作用,坦克对象卡在旋转中,如上图所示:

 IEnumerator DoRotationAtTargetDirection(Transform opponentPlayer)
{
    Quaternion targetRotation = Quaternion.identity;
    do
    {
        Debug.Log("do rotation");

        Vector3 targetDirection = (opponentPlayer.position - transform.position).normalized;
        targetRotation = Quaternion.LookRotation(targetDirection);
        transform.rotation = Quaternion.RotateTowards(transform.rotation, targetRotation, Time.deltaTime);

        yield return null;

    } while (Quaternion.Angle(transform.rotation, targetRotation) < 0.01f);
}

坦克物体前进方向:


Time.deltaTime是一个不合适的 lerp 参数。相反,定义一个float rotationSpeed并使用rotationSpeed * Time.deltaTime as the maxDegreesDelta论证Quaternion.RotateTowards https://docs.unity3d.com/ScriptReference/Quaternion.RotateTowards.html.

另外,使用LookRotation这样会给你一个世界空间旋转。所以你应该将你的结果分配给transform.rotation代替transform.localRotation.

总而言之,这些更改可能如下所示:

public float rotationSpeed;

IEnumerator DoRotationAtTargetDirection(Transform opponentPlayer)
{
    Quaternion targetRotation = Quaternion.identity;
    do
    {
        Debug.Log("do rotation");
        Vector3 targetDirection = opponentPlayer.position - transform.position;
        targetRotation = Quaternion.LookRotation(targetDirection);
        Quaternion nextRotation = Quaternion.RotateTowards(
                transform.rotation, targetRotation, rotationSpeed * Time.deltaTime);
        transform.rotation = nextRotation;
        yield return null;

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

平滑地朝目标对象旋转对象 的相关文章

  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 关于 C++ 转换:参数 1 从“[some_class]”到“[some_class]&”没有已知的转换

    我正在研究 C 并且遇到了一个错误 我不知道确切的原因 我已经找到了解决方案 但仍然想知道原因 class Base public void something Base b int main Base b b something Base
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co

随机推荐

  • 实施苹果推送通知的步骤是什么?

    我是这个主题的新手 需要一些指导来在我的应用程序中实现 Apple 推送通知 我已经创建了我的 appID 并为其配置了 Apple 推送通知 我已经下载了配置文件并在 iPhone 上安装了该应用程序 我还编写了Apple文档提供的以下代
  • 如何在路线更改时重置滚动位置?

    我在 Angular JS 上度过了最初的几个小时 并尝试用它编写 SPA 但是 在更改路线时 滚动位置在更改路线后仍保持在当前位置 这意味着 如果有人读完第二页上的一半文本 则在切换到第二页后 此人将在第二页时最终位于页面中间 假设页面同
  • Java 正则表达式提供任何性能优势吗?

    在Java中 当我们尝试使用正则表达式进行模式匹配时 例如获取输入字符串并使用正则表达式来确定它是否是数字 如果不是 则抛出异常 在这种情况下 我理解 使用正则表达式使代码比我们获取字符串的每个字符 检查它是否是数字 如果不是则抛出异常更简
  • Python 中的 RSS 提要解析器库 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个好的 python 库来帮助我解析 RSS 提要 有人用过 feedparser 吗 任何
  • 如何在 Firemonkey 中加载自定义光标?

    我需要在我的 Firemonkey 桌面项目中使用自定义光标 我可以在 VCL 项目中使用 LoadCursorFromFile 在我的项目中加载自定义光标 我尝试对 Firemonkey 执行相同的操作 但它没有加载光标 有没有什么工作方
  • 如何使用 jQuery 清空输入字段

    我在移动应用程序中 使用输入字段来命令用户提交号码 当我返回并返回到输入字段显示输入字段中显示的最新数字输入的页面时 有没有办法在每次加载页面时清除该字段 shares keyup function payment 0 calcTotal
  • 如何在 Scala 中减去列表中的两个连续元素?

    我想用 Scala 中的数字减去列表中的两个连续元素 例如 我有这个清单 val sortedList List 4 5 6 我想要一个像这样的输出列表diffList 1 1 where 5 4 1 and 6 5 1 我尝试了以下代码
  • 无法使用 [self theMethod:] 调用类方法

    我正在尝试在 Objective C 中编写一个类方法 当我声明该方法时 该项目构建得很好 但每当我尝试调用该方法时 构建都会失败 这是我的代码 头文件 import
  • 使浅层 GIT 存储库变得不那么浅

    我为指定标签创建浅克隆 git clone branch v0 1 3 depth 1 file c usr sites smc 此后 克隆的存储库中仅包含标签 v0 1 3 和相关文件 它没有该标签之前或之后的所有更改的历史记录 据我所知
  • 在非常大的文件中快速搜索字符串

    在包含字符串的文件中搜索行的最快方法是什么 我有一个包含要搜索的字符串的文件 这个小文件 smallF 包含大约 50 000 行 如下所示 搜索字符串1字符串搜索2字符串搜索3 我必须在一个更大的文件中搜索所有这些字符串 大约1亿行 如果
  • 实体ORM设计

    我有四个实体 一个大猩猩 一个健康检查 发射器和一个微芯片 我有一个关于将这些实体连接在一起的问题 大猩猩每年进行 3 4 次健康检查 因此它们是 OneToMany 每只大猩猩normally在其生命过程中拥有 1 个微芯片 在健康检查期
  • Android Studio 2.3 中的 Gradle 缩进问题

    每次我在 AS 2 3 中创建一个新的 Activity 时 它都会弄乱 build gradle 缩进 从而导致这样的错误 错误 无法获取 org gradle api internal artifacts dsl dependency
  • 测试数字是否在循环区间内

    假设我们有一个数字圈 范围从 180 到 180 看起来像这样 180 180 90 90 0 圆的一部分始终沿顺时针方向扫过 如何判断一个数字是在扫描区间之内还是之外 在以下示例 I O 中 前两个数字表示间隔 第三个数字是正在检查的数字
  • 使用selenium webdriver java 4.0v捕获网络流量

    我想捕获 Chromedriver 窗口中生成的网络流量 我发现可以使用 selenium 4 0 DevTools 实用程序来完成此操作 但我找不到如何操作或良好的文档 https www selenium dev selenium do
  • hive hadoop 上可用的数据可视化工具

    请推荐一些可以在 Hive Hadoop 上运行的可视化工具 唯一的事情是 它应该接受Hive 这取决于您想要的数据分析和可视化类型 如果您打算使用专有工具 那么Tableau http www tableausoftware com so
  • pyspark没有模块名称错误

    这是我正在遵循的教程中的确切代码 我的同学使用相同的代码没有收到此错误 ImportError Traceback most recent call last
  • 当没有传递参数时如何读取标准输入?

    当我想在没有传递参数 文件 的情况下使用标准输入时 脚本不起作用 有什么方法可以在这段代码中使用标准输入而不是文件吗 我试过这个 if n 1 check if argument exists then 1 stdin if not use
  • 确定函数是否是异步信号安全的(可以在信号处理程序内部调用)

    我的问题是 如果您无权访问函数的实现 是否有办法最终确定函数是否是异步信号安全的 如果没有 有没有办法测试函数是否足够异步信号安全 可以从信号处理程序调用 如果您阅读 signal 或 sigaction 的手册页 您将获得异步信号安全函数
  • 为什么 ContentResolver 看不到其他应用程序添加的文件?

    我将文件添加到Documents MyExcelsFolder通过使用ContentResolver insert然后还将新文件添加到Documents MyExcelsFolder另一个应用程序的文件夹 例如文件管理器 然后我尝试从以下位
  • 平滑地朝目标对象旋转对象

    我想将我的玩家车辆旋转到目标对象方向 侧面 通过下图 我试图以更好的方式解释我的观点 我想将下面的坦克对象旋转到另一个坦克对象 以便它可以指向那个方向 我为此目的编写了这段代码 但它不起作用 IEnumerator DoRotationAt