使用vector3.MoveTowards移动对象

Oph*_*lia 2 c# android device unity-game-engine gameobject

我正在使用Unity开发游戏应用程序。我在移动GameObject时遇到问题。

在我的游戏中,当玩家使用其设备向上滑动时,GameObject从点A移至B,而当他向下滑动时,游戏对象则从B移至A。

我用游戏逻辑编写了一个C#脚本,但是涉及到这个问题。

问题在于GameObject立即从A移动到B。

这是我用来移动GameObject的代码行:

transform.localPosition = Vector3.MoveTowards (PositionA,PositionB,Time.deltaTime * speed);
Run Code Online (Sandbox Code Playgroud)

speed 是一个值为10.0f的浮点数。

我希望我的GameObject缓慢移动以将A指向B。尽管速度值发生了变化,但没有任何变化,它仍然在瞬间移动。

我该如何解决?(我尝试Vector3.Lerp过,但结果相同)。

Kon*_*eke 6

Vector3.MoveTowards获取当前位置,目标位置和步骤,但似乎您的第一个参数是移动的起点,而不是当前位置。通常,您会在Update()

transform.localPosition = Vector3.MoveTowards (transform.localPosition, PositionB, Time.deltaTime * speed);

以当前位置作为第一个参数。


Uma*_*r M 5

以下是如何使用MoveTowards

void Update()
{
    float step = speed * Time.deltaTime;
    transform.position = Vector3.MoveTowards(transform.position, PositionB, step);
}
Run Code Online (Sandbox Code Playgroud)

了解更多