Questions tagged «lerp»

3
如何在循环的值(例如色相或旋转)之间保持平衡?
观看演示 我试图使关节围绕画布的中心顺着鼠标指针的角度平滑旋转。我所拥有的作品有效,但我希望它能够动画化尽可能短的距离,以达到鼠标角度。当值在水平线(3.14和-3.14)处循环时,会发生问题。将鼠标悬停在该区域上,即可查看方向的切换方式,并且需要很长的路程。 相关代码 // ease the current angle to the target angle joint.angle += ( joint.targetAngle - joint.angle ) * 0.1; // get angle from joint to mouse var dx = e.clientX - joint.x, dy = e.clientY - joint.y; joint.targetAngle = Math.atan2( dy, dx ); 如何使它旋转最短的距离,甚至“跨越间隙”?

6
如何在多种颜色之间进行Color.Lerp?
我发现很难在Unity文档中找到解决方案。 Color.Lerp(Color a, Color b, float t) 是一个函数,该函数根据步骤t逐渐更改颜色,从而为其提供颜色b的最终值。 如何在多种颜色之间一个一个地变色?
12 c#  unity  color  lerp 

3
为什么在Lerping函数中使用Time.deltaTime?
据我了解,两个值(之间的线性插值内插功能a和b使用第三值()t之间)0和1。在t = 0处返回值a,在处返回t = 1值b。值为0.5时,返回a与之间的中间值b。 (下图是一个平滑的步骤,通常是三次插值) 我一直在浏览论坛,在这个答案上,我找到了以下代码行:transform.rotation = Quaternion.Slerp(transform.rotation, _lookRotation, Time.deltaTime); 我对自己说:“真是个傻瓜,他不知道”,但是因为它有40多个投票,所以我尝试了一下,果然成功了! float t = Time.deltaTime; transform.rotation = Quaternion.Slerp(transform.rotation, toRotation, t); Debug.Log(t); 我之间的随机值0.01,并0.02为t。函数不应该相应地插值吗?为什么这些值会堆叠?我不明白勒普是什么意思?

2
插值实际上如何使物体的运动平滑?
在过去的8个月左右的时间里,我已经问过几个类似的问题,但并没有真正的高兴,所以我将使这个问题更笼统。 我有一个Android游戏,它是OpenGL ES 2.0。在其中,我有以下游戏循环: 我的循环以固定的时间步长原理工作(dt = 1 / ticksPerSecond) loops=0; while(System.currentTimeMillis() > nextGameTick && loops < maxFrameskip){ updateLogic(dt); nextGameTick+=skipTicks; timeCorrection += (1000d/ticksPerSecond) % 1; nextGameTick+=timeCorrection; timeCorrection %=1; loops++; } render(); 我的整合是这样的: sprite.posX+=sprite.xVel*dt; sprite.posXDrawAt=sprite.posX*width; 现在,一切都按我的意愿运行。我可以指定我想要一个对象在2.5秒内移动一定距离(例如屏幕宽度),并且它会做到这一点。同样,由于我在游戏循环中允许跳帧,因此我几乎可以在任何设备上执行此操作,并且总是需要2.5秒。 问题 但是,问题在于,当渲染帧跳过时,图形停顿。太烦人了。如果我取消了跳帧的功能,那么一切都会很顺畅,但是会在不同设备上以不同的速度运行。所以这不是一个选择。 我仍然不确定为什么会跳帧,但是我想指出的是,这与性能差无关,我将代码恢复为1个小的sprite,没有任何逻辑(除了移动精灵),但我仍然跳过帧。这是在Google Nexus 10平板电脑上使用的(如上所述,我需要跳帧以保持设备间的速度保持一致)。 因此,我唯一的选择是使用插值法(或外推法),我读过那里的每篇文章,但是没有一篇文章真正地帮助我了解它的工作原理,并且所有尝试的实现都失败了。 使用一种方法,我可以使事情顺利进行,但是这是行不通的,因为它弄乱了我的碰撞。我可以预见任何类似方法都会出现相同的问题,因为插值在渲染时传递给了渲染方法(并在其中起作用)。因此,如果Collision纠正了位置(角色现在正站在墙旁边),则渲染器可以更改其位置并将其绘制在墙中。 所以我真的很困惑。人们曾经说过,永远不要在渲染方法中更改对象的位置,但是所有在线示例都显示了这一点。 因此,我要求朝着正确的方向发展,请不要链接到流行的游戏循环文章(deWitters,Fix your timestep等),因为我已多次阅读这些文章。我不是要任何人为我编写代码。请简单地解释一下插值实际上如何与一些示例一起使用。然后,我将尝试将任何想法整合到我的代码中,并在需要时提出更具体的问题。(我确信这是很多人都在努力解决的问题)。 编辑 一些其他信息-游戏循环中使用的变量。 private long nextGameTick …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.