即使速度非常低,物体也会立即移动到新位置

2024-04-11

我想将一个对象缓慢地从其原始位置移动到稍高的位置,但此代码会立即将对象移动到最高位置,即使我使用非常慢的速度(如 0.0001f)。我在另一个代码中仅调用 LiftObj() 1 次,并告诉它运行直到达到 liftOffset。这段代码有什么问题?

    void LiftObj(GameObject Obj) {

    float origianlPos = Obj.transform.position.y;
    while (Obj.transform.position.y < origianlPos + liftOffset) {
        Obj.transform.position += Vector3.up * 0.0001f;
        float newPos = Obj.transform.position.y;
        newPos = Mathf.Clamp (newPos, newPos, newPos + liftOffset);
        Obj.transform.position += Vector3.up * 0.0001f;
    }

但是这段代码立即将对象移动到最高位置 当我使用非常慢的速度(例如 0.0001f)时。

你根本就没有在等待。无论变量有多低, while 循环都会尽可能快地执行。您应该在协程函数中执行此操作,然后等待yield关键词yield return null.

IEnumerator LiftObj(GameObject Obj)
{

    float origianlPos = Obj.transform.position.y;
    while (Obj.transform.position.y < origianlPos + liftOffset)
    {
        Obj.transform.position += Vector3.up * 0.0001f;
        float newPos = Obj.transform.position.y;
        newPos = Mathf.Clamp(newPos, newPos, newPos + liftOffset);
        Obj.transform.position += Vector3.up * 0.0001f;
        yield return null;
    }
    Debug.Log("Done Moving Up!");
}

然后移动它:

StartCoroutine(LiftObj(myGameObject));

甚至不确定这是否会按预期工作,因为您失踪了Time.delta所以动作可能不顺畅。如果您只想从一个位置移动到另一个加班位置,请使用下面的示例代码:

IEnumerator LiftObj(GameObject playerToMove, Vector3 toPoint, float byTime)
{
    Vector3 fromPoint = playerToMove.transform.position;

    float counter = 0;

    while (counter < byTime)
    {
        counter += Time.deltaTime;
        playerToMove.transform.position = Vector3.Lerp(fromPoint, toPoint, counter / byTime);
        yield return null;
    }
}

从当前移动myGameObject位置到Vector3(0, 5, 0) in 4秒:

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

即使速度非常低,物体也会立即移动到新位置 的相关文章

随机推荐

  • 从 C# 获取 Powershell 错误

    Problem 我正在从 c 调用 powershell 命令 但是PowerShell命令对象似乎只有属性bool HasErrors这对我没有帮助what我收到的错误 这就是我构建 powershell 命令的方式 Library pu
  • 如何在网站上的多个登录字段上使用自动填充

    当网页上有两个单独的登录字段时 我的浏览器 Google Chrome 假设它们都需要相同的凭据 这不是一个有效的假设 我希望我的浏览器能够分别存储每个人的凭据
  • 如何将 JavaFX TableView 与 java 记录一起使用?

    Records是一个新功能Java 16 https en wikipedia org wiki Java version history Java 16 定义于JEP 395 记录 https openjdk org jeps 395 假
  • 如何在反应中单击按钮将一个组件移动到另一个组件?

    您能告诉我如何在反应中单击按钮时将一个组件移动到另一个组件吗 我得到了react router js来自 cdn 我不知道如何使用这个 js 我想展示second component on button click of第一个组件 这是我的
  • Delphi MREW 实现对读者有利吗?

    是否有 MREW 多读 独占写 锁的 Delphi 实现 它有利于读而不是写 我觉得TMultiReadExclusiveWriteSynchronizer http edn embarcadero com article 28258已经受
  • Java中对象的类型切换

    所以我想知道一种在Java中切换有效类型的简单方法 如下所示 我知道这不能编译 但我想要这个功能 public void put Object obj if obj instanceof Integer else if obj instan
  • JButton 中的图标位置

    是否有可能更改 JButton 中的图标图像位置 现在看起来是这样的 我想将图标移到更左边 我尝试更改文本对齐方式 但它无法按我想要的方式工作 myButton setHorizontalTextPosition SwingConstant
  • 将有符号整数转换为无符号长整型的最佳方法?

    对于 Java 中的某些哈希函数 最好将值视为无符号整数 例如 用于与其他实现进行比较 但 Java 仅支持有符号类型 我们可以将有符号的int到 未签名 long像这样 public static final int BITS PER B
  • Scrum 故事和幕后特色 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 据我了解 Scrum 待办事项由一系列代表最终用户的故事组成 并进一步分解为功能 如果是这样的话 所有与故事没有真正联系但仍然有用的幕后功
  • PyQt4、QThread 和打开大文件而不冻结 GUI

    我想问如何从磁盘读取大文件并保持 PyQt4 UI 响应 不阻塞 我已将文件的负载移至 QThread 子类 但我的 GUI 线程被冻结 有什么建议么 我想这一定是GIL的问题 但我不知道如何排序 编辑 我正在使用 GDCM 项目中的 vt
  • HBase如何实现对HDFS的随机访问?

    鉴于HBase是一个数据库 其文件存储在HDFS中 那么它如何实现对HDFS中单个数据的随机访问呢 这是通过什么方法实现的呢 From Apache HBase 参考指南 http hbase apache org book archite
  • 事件+适配器模式

    我在泛型类上有一个适配器模式 它本质上在类型之间进行适应 class A
  • 如何在我的 Swift 项目中使用 Objective-C 项目

    注 我知道如何从 Swift 调用 Objective C 代码 https stackoverflow com q 24002369 6521116 但我不知道下面 我想用这个EsptouchForIOS的演示 https github
  • @AutoConfigureAfter 未按预期工作

    我有 3 个 spring boot starter 项目 其中一个自动配置类具有以下代码 Configuration ConditionalOnClass value Config class AutoConfigureAfter val
  • SQL查询结果需要返回WHERE子句中的所有记录,甚至重复

    我是 Microsoft SQL Server 的新手 需要一个查询来返回 WHERE 子句中列出的所有记录 甚至是重复的记录 我所拥有的只会返回 3 行 我正在使用 C 读入并解析文本文件 使用该文本文件 我创建一个查询以从数据库获取结果
  • Xcode:多人共享相同的 Bundle ID

    我正在和朋友一起开发 iOS 应用程序 我们都以个人身份报名参加了 Apple 开发计划 我们没有组织 我们正在使用 git 并且希望能够从 Mac 构建应用程序 但我无法编译 因为 Bundle ID 已被我的朋友使用 是否有可能在不成为
  • 将数据库文件从文件资源管理器中的 /assets 复制到 /data/data 文件夹 - Android

    我在文件资源管理器中将数据库文件从 assets 复制到 data data 文件夹时遇到问题 我搜索了这个网站 找到了很多答案 但找不到适合我的情况的适当答案 我已经使用 SQLite Manager 在外部创建了数据库并将其导入到资产文
  • 在 R 中的 DT::datatable 中包含表容器

    我是 HTML 和交互式表格的新手 并且在构建表格容器来为我的数据集添加标题时遇到了麻烦 有没有一种简单的方法可以为我的数据集插入表头 我希望第 2 5 列 不包括第 1 列中的日期 和第 6 9 列分别具有标题 部门 和 行业 我在下面包
  • 如何使用 scala 2.12 重建 apache Livy

    我正在使用 Spark 3 1 1 它使用 Scala 2 12 以及从下载的预构建 Livyhere https livy incubator apache org download 使用 Scala 2 11 可以找到名为repl 2
  • 即使速度非常低,物体也会立即移动到新位置

    我想将一个对象缓慢地从其原始位置移动到稍高的位置 但此代码会立即将对象移动到最高位置 即使我使用非常慢的速度 如 0 0001f 我在另一个代码中仅调用 LiftObj 1 次 并告诉它运行直到达到 liftOffset 这段代码有什么问题