矩形变换跟踪游戏对象平滑



我希望Unity 4.6中的RectTransform(面板)遵循worldObject。我得到了这个工作,但运动并不像我想要的那么顺利。它似乎有点锯齿状,当我开始移动相机时,它落后了。

    Vector2 followObjectScreenPos = Camera.main.WorldToScreenPoint (planet.transform.position);
    rectTransform.anchoredPosition = new Vector2 (followObjectScreenPos.x - Screen.width / 2, followObjectScreenPos.y - Screen.height / 2);

非常感谢提示和技巧。

有很多选项:

1)您可以将gui画布添加到worldObject并使用此画布渲染面板(只需将其添加为子级),但这可能不是您所需要的。

2)要消除锯齿状运动,您应该以一种或另一种方式补间。DOTween是我个人的偏好,以下内容将为您提供所需的结果:

Tweener tweener = transfrom.DOMove (Target.position, 1).SetSpeedBased();
tweener.OnUpdate (() => tweener.ChangeEndValue (Target.position, true));

3) 如果您不想在代码中包含依赖项,则可以在更新函数中在当前位置和所需位置(或在本例中为 - anchoredPosition)之间执行线性插值。

我建议使用补间器,

以免使您的更新功能混乱,并且通常补间在各种游戏中都有大量潜在用途。

下面是线性插值的代码示例,以防您不想使用补间库:

float smoothFactor = 1.0f; //used to sharpen or dull the effect of lerp
var newPosition = new Vector3(x,y,z);
var t = gameObject.transform;
t.position = Vector3.Lerp (t.position,
                           newPosition,
                           Time.deltaTime * smoothFactor);

将其放在更新功能中,它将使游戏对象遵循特定的newPosition

最新更新