问题标签 [lerp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
955 浏览

unity3d - 具有不同速度的四元数 lerp 用于偏航/俯仰/滚动

我想在 unity3d 中的三个不同轴(偏航/俯仰/滚动)上以不同速度进行两次旋转,并尝试使用Quaternion.LookRotation().

Quaternion.LookRotation()将方向向量作为第一个参数,所以我认为我可以先调整方向,然后用 lerped 向上向量查看它。

应该没问题Vector3.lerp(),但在这种情况下,我需要在两个轴(X 和 Y)上相对于初始方向以不同的速度调整方向。

例如,我有一个面向目标的相机,然后目标向上和向右移动一点,现在我希望相机也慢慢向右倾斜,但要快一点到目标位置(保持自己的位置) .

如何在两个轴上使用不同速度的方向矢量来使用它Quaternion.LookRotation()

编辑: 将标题从“在 X/Y 上具有不同速度的 Vector3 之间的 Lerp”更改为“偏航/俯仰/滚动具有不同速度的四元数 lerp”并修改了问题以匹配主题。

0 投票
1 回答
38 浏览

c# - 在 Unity3D 中使用 lerp 时,如何让我的相机在不同位置之间暂时暂停?

我有一系列位置,我希望我的相机在它们之间移动/移动。有两个按钮(按钮 A 和按钮 B)触发相机移动位置。如果用户按下按钮 A,相机将移动到阵列中的前一个位置。如果用户按下按钮 B,相机将移动到阵列中的下一个位置。然而,在移动到一个新位置之前,我希望相机能够移动到一个中间位置,在那里暂停几秒钟,然后移动。这是我目前拥有的伪代码:

但这不起作用,因为在切换相机位置时我会感到奇怪的抖动,而且我的中间位置并不总是发生。我认为我的问题与执行顺序有关,但我无法弄清楚。任何帮助都会很棒:)

0 投票
1 回答
47 浏览

c# - 尝试创建将浮点数内插为零的函数

我正在尝试创建一个平滑函数来将数字内插为零。问题是,它不起作用。在这种情况下,如果我将一个数字增加 0.01 指定次数,我想将该数字减少 0.02 直到它为零。这是我的功能。

我想用它来创造一种统一的滑动运动。

0 投票
1 回答
669 浏览

c# - 我想要一个在 y 轴上倾斜的对象沿着 Z 轴移动?

我目前正在制作一个不是在 Unity 中随机生成的跑步者类型游戏。玩家、相机和背景保持在同一个地方(玩家运动被限制),并且危险沿着负 Z 轴向玩家移动,使用以下简单的代码行:

它工作正常。现在我想添加小行星,这些小行星不仅会朝玩家移动,还会上下移动(并重复),我尝试使用 Lerp() 来执行此操作。我不是 Lerp 的专家,所以我使用了我在网上找到的有效代码:

我所做的是为开始和结束位置创建 2 个空对象,然后我将危险和两个 lerping 点放在另一个空对象下,我们称之为父对象(所以父对象 > -危险 - 开始 - 结束)。然后我将沿 Z 轴的移动脚本添加到空的父级,它有点工作,但就像跳跃一样。所以 lerping 工作但它不会沿着 Z 轴移动,直到 lerping 功能完成,对象跳转到 Z 轴上的新位置。所以它看起来非常跳跃和小故障。

我该怎么做才能沿着 Z 轴平滑移动,而 lerp 仍然沿着 Y 轴工作?

谢谢!!

PS:我知道我可以移动角色和相机等,但现在我想保持这种方式。

0 投票
2 回答
511 浏览

c# - 像 F-Zero GX 一样在管道内移动

我已经在这个项目上工作了一段时间 - 我一直在尝试制作一个简单的立方体,玩家可以使用箭头向左或向右移动,能够围绕管道旋转,类似于赛车手可以围绕管道移动在 F-零 GX 中:

https://www.youtube.com/watch?v=RlS1i7aCnvg

现在,我知道我不是第一个尝试实施这些物理学的人,因为我已经阅读了两三个试图实施类似技术的人的帖子。问题是我尝试过使用这些不同的方法或它们的变体。其中一个已经非常接近我想要的行为 - 但是玩家立方体仍然会在立方体从地面超过整个管道壁的一半后意外地在其 X 轴上旋转。这是我正在谈论的关卡构建的视觉效果:

在此处输入图像描述

整个想法是,立方体可以围绕管道的整个壁“移动”或“行走”,就像您在 F-Zero 视频的管道部分中看到的那样,当然仍然向前移动。我有一个圆柱体,它实际上在你看到的那个圆柱体内部,它实际上只是一个凸面触发器 - 因此用于确保当立方体位于管道模型内时玩家立方体的重力刻度关闭。

我已经接近完成这项工作,但问题是看到玩家能够一直移动一个完整的圆圈,即。以圆周运动完全回到底部或玩家进入管道时开始的位置。然而,当它完成墙壁移动的一半多一点时,立方体喜欢“翻转”。我一直在另一篇文章中读到有人实际上改变了物体的刚体以使“船”保持直立,这与它有关吗?

https://forum.unity.com/threads/f-zero-esque-control-question.157909/

“基本上我给了我的车一条悬浮裙。”

我应该考虑相应地改变刚体的形状吗?执行此操作的最佳资源是什么?或者也许我应该使用字符控制器?我仍然依靠刚体设置,但在阅读了这些内容后,我已经对这种可能性敞开了心扉。

这个 Raycast 代码非常接近我想要的,没有骰子:

我尝试探索的另一种可能性是创建自己的重力拉力——我什至有一个尝试这样做的类,FauxGravity,它附加到玩家碰撞的对象(在本例中为圆柱体):

我是否需要将我的 FixedUpdate 逻辑移动到 Update 方法?根据我父亲的说法(他是天体物理学家),我在这种方法中探索的最后一个算法本质上是通过将玩家的矢量与他/她正在行进的管道的横截面相乘来确保拉力始终等于 1 .

这是我的玩家的移动类,它有几个已注释和未注释的尝试旋转立方体,以使立方体的下侧在攀爬时始终面向管壁:

任何人都可以提供一些额外的提示、提示和技巧吗?我认为使用 Raycast,甚至是其中的 SphereCast,可能是最接近我想要的方法,但我只是坚持如何在不冒险旋转玩家立方体的情况下准确实现它错误的一面并搞砸了物理相互作用。是不是我想太多了?

非常感谢大家。

更新:

我一直在改变玩家 Y 速度的逻辑,因为绕圈移动必须涉及特定的物理特性,如下页给出的等式:

https://www.physicsclassroom.com/class/circles/Lesson-1/Speed-and-Velocity

但是,我仍在努力寻找一个好的时间值来划分等式的顶部。这是我向右移动时的移动代码:

似乎除以 Time.deltaTime 只是让玩家跳了很远的距离——这不是我想要的。我还尝试使用自游戏开始以来的时间量作为除法器,然后将整个结果乘以 Time.deltaTime - 但正如您可能推断的那样,帧只是增加,然后最终以这种方式减慢速度.

有什么进一步的想法或建议吗?

0 投票
3 回答
159 浏览

unity3d - Mathf.Lerp 未命中最终值

我正在使用 Mathf.Lerp 为圆形进度条设置动画。

进度条是一个具有名为“FillAmount”的属性的图像:

连同填充属性“Radial 360”,它的作用有点像时钟。

由于某种原因,错过了执行 Lerp 函数后的最终值,我不知道如何改进该函数以达到预期的结果。

我的圆形进度条是 3/4 环,这就是为什么我将 uFrom 和 uTo(介于 0 到 100 之间)乘以 0.75。

这是我的代码:

例如,当我调用 AnimateHealthChange(0, 100) 时,我得到以下日志输出:

我预计最终结果为 0.75,而不是 0.6807814。

有人看到我的错误,还是我错误地使用了 Lerp?

在此处输入图像描述

0 投票
1 回答
75 浏览

unity3d - (Unity2D) 碰撞时切换运动风格

我在自上而下的游戏中有一个玩家角色,它以网格状运动(一次 1 个单位)移动,但是当它碰到一块冰(正方形)时,我希望它切换到 lerp 运动,滑到边缘,然后停止。

目前,我有 5 个不同的对撞机作为孩子的每块冰:冰对撞机本身,以及 4 个稍微距离的对撞机,一个用于冰的每一侧。当它撞到冰对撞机时,根据它的前进方向,它应该向相关的远距离对撞机倾斜。

像这样(很难看到主对撞机,但它就在那里): 冰

这是我一直用于向下键的代码(所有键基本相同):

编辑:更新 bool 'onIce' 的代码:

0 投票
2 回答
1280 浏览

c# - 如何统一更新一次

您好,我有一个代码,当我按下按钮时,它会将我的主摄像机移动到其他游戏对象位置,就像我按下按钮 1 一样,它将向对象 1 的位置移动,与按钮 2 和 3 相同。现在在我的代码中,我有一个名为 flag 的布尔值这在更新功能中是正确的,然后我现在有多个按钮的多个公共功能,当我按下任何按钮时,布尔值变为真并保持为真,这会导致相机抖动,因为布尔值不断更新请告诉我一种方法,当我的相机最终到达它时位置标志布尔值变为假,当我再次按下另一个按钮时,我将再次变为真这是我的代码

}

0 投票
3 回答
298 浏览

unity3d - 消除 lerps 之间的延迟

我制作了一个简单的脚本,它先到一个航点,然后再到下一个。

我的问题是,从 waypoint1 到 waypoint2 似乎有延迟,我不知道为什么: 在此处输入图像描述

¿ 为什么会发生这种延迟,我该如何消除它?

0 投票
1 回答
168 浏览

unity3d - Unity 在屏障内移动 3D 对象

我正在使用下面的代码附加到带有脊体和碰撞的圆柱体对象上。这个对象被放置在形成一个圆圈的碰撞障碍的中间。我试图让这个物体平稳地向前移动一段随机距离,在它移动后,等待一段随机时间然后再次移动。如果它撞到带有标签名称“墙”的障碍物,然后转身离开墙壁一定程度,以便它可以继续在里面移动。并继续执行以下代码。

然而,物体并没有平稳地移动,它几乎没有移动。

我怎样才能解决这个问题?提前感谢任何链接或帮助解决这个问题。