Articles of lerp

基于定时器来提供一个对象

我试图根据计时器在两个对象之间建立一个目标lerp。 目前,我有以下代码: float distCovered = (Time.time – waitTime) * speed; float fracJourney = distCovered / journeyLength; if (_moveDown == false) { if (startTime + waitTime < Time.time) { transform.position = Vector3.Lerp(start.position, end.position, fracJourney); if (transform.position == end.position) { Debug.Log("going down"); _moveDown = true; transform.position = Vector3.Lerp(end.position, start.position, fracJourney); } } } if (_moveDown == true) […]

在相对位置停止Lerp?

在我的Unity 2D平台游戏中,当角色蹲伏但不移动时,我试图将相机向下移动一点。 我已经做了以下几点: cameraPosition = mainCamera.transform.position.y; cameraPosition = Mathf.Lerp(cameraPosition, cameraPosition – 0.8f, 3 * Time.deltaTime); mainCamera.transform.position = new Vector3(mainCamera.transform.position.x, cameraPosition, mainCamera.transform.position.z); 这是有效的,但是这会导致相机的y值不断下降,而不仅仅是0.8f,因为cameraPosition在每一帧都被分配了一个新的值。 但是cameraPosition必须是相对的,因为它的位置取决于玩家的位置,所以我不知道如何写它。

Lerp与animation

我已经阅读了一些关于lerp和animation的post,但是没有一个看起来完全回答我的问题,或者我没有正确地阅读它们。 比方说,我在游戏中有一个盒子。 这个盒子有一个盖子,它打开的唯一方式是通过用户交互(例如,如果是倒挂的,用户按下“E”而盒子打开)。 现在,我可以通过两种方式实现这一点。 1)使用“打开”animation对盒子的模型进行animation处理 – 盒子盖子在X轴上旋转,直到模型构成“打开”框; 要么 2)我把盒盖从closures打开,随着时间的推移旋转X轴,直到再次,模型构成一个“打开”框。 除了这里的post显示: …通过脚本,MoveTowards方法导致高达0.10毫秒的延迟,而播放普通的animation几乎没有改变。 如果有什么可能是0.1到0.3毫秒之间的东西。 有什么理由为什么会比其他人更喜欢? 我个人比较喜欢用Lerp,所以我可以制作一个通用的“开放”课程,我可以把它安装在箱盖上,然后到一个门上,只要改变它的枢轴即可。 任何想法,想法或解释将不胜感激。

在特定的时间里的速度

如何在特定的时间内将速度调整为0? 比如在两秒钟内? 我需要这个跳跃。 velocity.Y = MathHelper.Lerp(velocity.Y, 0, [time]);

Unity中的一个游戏对象的抛物线运动

目前我正在做一个3D游戏。 在这个游戏中,我的球员是一个球,它可以从瓦片跳到瓦片。 当球跳起时,球的运动向左或向右45度。 我想让它跳上抛物线的path。 但我无法做到这一点。 我已经使用了Mecanim,AngleAxis和lerp。 但问题是,我一起使用lerp和animation,首先是lerp,然后是animation(Jumpanimation)。 基本上球有一个父母,主要是父母之间的瓷砖和球本身有animation剪辑附加到它。 任何建议或帮助表示赞赏。

捕捉鼠标移动时,转换值保持为零

我正在使用GoogleVR进行游戏,但我认为这与我的问题没有任何关系。 基本上,我正在testing,看看我现在是否可以通过使用鼠标移动一个棒。 我得到鼠标移动,从md的值看: (-0.5,-1.25) UnityEngine.Debug:Log(Object) PlayerMovement:Update() (at Assets/Character Pack/PlayerMovement.cs:30) 但从localRotation ,转换是错误的: (0,0,0) UnityEngine.Debug:Log(Object) PlayerMovement:Update() (at Assets/Character Pack/PlayerMovement.cs:29) 我只是想看到我的棍子以一种可预测的方式移动的基础上,鼠标的移动,我不知道为什么我的方程是错误的。 public class PlayerMovement : MonoBehaviour { Vector2 mouseLook; Vector2 smoothV; public float sensitivity = 5.0f; public float smoothing = 2.0f; public GameObject stick; // Use this for initialization void Start () { smoothV.x = 0.5f; smoothV.y = […]

Unity3d – 变换旋转(角度)的帮助

我试图旋转一个对象向左旋转90度,而不是直接旋转左旋转270度向右。 以下是控制旋转的代码部分: rotationDestination = new Vector3(60, 270, 0); if (Vector3.Distance(transform.eulerAngles, rotationDestination) > 0.2f) { transform.eulerAngles = Vector3.Lerp(transform.rotation.eulerAngles, rotationDestination, rotationSpeed * Time.deltaTime); } 如果我尝试将Y轴-90 aka(60,-90,0)做成一直向左旋转, 我如何使它直接向左旋转(90度)? 谢谢。

我如何准确地lerp色彩在几秒钟?

我有一些代码lerp两个颜色超过一定的秒数,和lerp工作正常: private Color lerpingColor; private IEnumerator LerpColorsOverTime(Color startingColor, Color endingColor, float time) { float step = 0.0f; while (step < 1.0f) { step += Time.deltaTime / time; yield return new WaitForSecondsRealtime(Time.deltaTime); lerpingColor = Color.Lerp(startingColor, endingColor, step); } } 问题是,这个时间比我在参数中提供的时间要长。 例如, LerpColorsOverTime(Color.white, Color.black, 5.0f); 花了8秒钟左右。 我最好的猜测是,我的方式非常低效。 我尝试了计算时间,但似乎没有工作。 在所示的特定情况下,这是因为calculationTime始终为0,因为在我的Time.time检查之间永远不会运行更新时间的代码。 我尝试了各种方法,这是我最好的: private Color lerpingColor; private IEnumerator LerpColorsOverTime(Color startingColor, […]

Lerp问题对象传送不移动

嗨,我只是想移动我的对象从一个位置平滑到另一个对象消失,并立即传送到位置,我点击任何人知道最新情况发生? if (Input.GetKeyDown(KeyCode.Mouse0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hit, 1000.0f)) { Vector3 newpos = new Vector3(hit.point.x, 0, hit.point.z); Cube40.transform.position = Vector3.Lerp (Cube40.transform.position, newpos, 1f); } } 谢谢你Vishnu我已经用代码下面的代码修复它,反正更好,但是Lerp方法本身存在另一个问题,因为无论我在哪里点击对象,总是在同一时间转换他的位置,而不能在RTS游戏中使用我需要像transform.Translate从:Vector3,到:Vector3参数。 GameObject Cube40; RaycastHit hit; Vector3 newPosition; void Start() { Cube40 = GameObject.Find("Cube1"); newPosition = Cube40.transform.position; } void Update() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, […]

Quaternion Lerp从未达到目标

我似乎误解了LERP的工作原理。 林不知道什么是缺less的。 该对象正在旋转,但它似乎无法完成。 即使视觉上完成,transform.rotation也不会达到目标。 Quaternion rotationTarget; Vector3 travelTarget; float rotationLerpProgress; float rotationLerpDuration = 1f; // Use this for initialization void Start () { } // Update is called once per frame void Update () { if (Input.GetMouseButtonDown (0)) { var ray = Camera.main.ScreenPointToRay (Input.mousePosition); RaycastHit rayHit; if (Physics.Raycast (ray, out rayHit)) { var rayHitPoint = […]