将角色从一个点平滑移动到另一个角色的最佳方法

时间:2018-04-09 15:20:58

标签: unity3d

我正在尝试制作一个游戏,如果用户点击屏幕,他们的角色会从一个点(例如屏幕的左侧)平滑地移动到另一个点(屏幕的右侧)。

我知道你可以通过几种方式做到这一点:Coroutines,Lerp甚至动画。我也不介意代码示例..

有哪些不同的方法来实现这一目标?

提前致谢!

1 个答案:

答案 0 :(得分:0)

best主要是以意见为基础,而不是实际问的好方法......无论如何

其他答案没有提到:

当然,平滑度不是来自Vector3.Lerp也不来自Coroutines,而是来自Time.deltaTime

Time.deltaTime值是自上一帧以来经过的实际时间。这样可以做到所有类型的平滑,特别是总是采用与帧速率无关的相同数量的实时动作和动作。

就动作的具体用例而言,我个人更喜欢使用Vector3.MoveTowards而不是Vector3.Lerp,因为后者会越来越慢,越接近目标。 (至少如果你使用transform.position作为第一个值,就像在例子中经常做的那样)

以下是Unity脚本API提供的示例

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    public Transform target;
    public float speed;
    void Update() {
        float step = speed * Time.deltaTime;
        transform.position = Vector3.MoveTowards(transform.position, target.position, step);
    }
}

当然,您也可以将target.position定义为目标位置,而不是Vector3

如果你需要碰撞检测而不应该使用它们,因为你可能只是一步将物体移动到远处,因此不会触发碰撞。

在这种情况下,您可能会在this post

中找到提示