正确使用Unity 4.6 MoveTowards

时间:2015-02-23 17:40:07

标签: animation unity3d

我已经连续几天没有成功了。我做了一个鸟儿的精灵动画拍打它的翅膀。我想让鸟儿飞到树上的特定位置。树是一个图像,其中包含附加动画的子图像。动画工作正常,但我想将它移动到树上的一个分支。下面列出的类附加到子图像上,但是鸟不会移动到分支。

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class FlyBird : MonoBehaviour {

    public Transform target; // Target is empty game object defined in the inspector
    public float MoveSpeed; // Set to 10 in the inspector

    // Script is attached to an Image object and the child of the image is a sprite animation

    void FixedUpdate()
    {
        transform.position = Vector2.MoveTowards(transform.position, target.position, MoveSpeed * Time.deltaTime);
        Debug.Log(transform.position.x);
    }
}

2 个答案:

答案 0 :(得分:0)

我不知道你当前的行为是什么,但可能是你正在使用FixedUpdate(),所以你应该使用Time.fixedDeltaTime而不是Time.deltaTime

答案 1 :(得分:0)

如果我在编辑后正确使用,您正在使用UI图像。 对于这种类型的对象,您应该使用其RectTransform而不是Transform。 试试这个:

rectTransform.position = Vector2.MoveTowards(rectTransform.position, target.rectTransform.position, MoveSpeed * Time.deltaTime);

假设您可以从目标对象获取rectTransform,当然。另一种方法是操纵rectTransform.anchoredPosition。

在此处查看有关此类Rect变换的更多信息:http://docs.unity3d.com/460/Documentation/ScriptReference/RectTransform.html