使用vector3.MoveTowards移动对象

时间:2016-11-08 14:12:18

标签: c# android unity3d device gameobject

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

在我的游戏中,当玩家用他的设备向上滑动时,游戏对象从A点移动到B点,当他向下滑动时,它从B点移动到A.

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

问题是GameObject会立即从A移动到B.

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

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

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

我希望我的GameObject缓慢移动到A点到B点。尽管速度值发生了变化,但没有任何变化,它仍然会立即移动。

我该如何解决? (我尝试使用Vector3.Lerp并获得了相同的结果。)

2 个答案:

答案 0 :(得分:4)

Vector3.MoveTowards获取当前位置,目标位置和步数,但看起来你的第一个参数是移动的起源,而不是当前位置。通常你会在Update()

中这样做

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

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

答案 1 :(得分:4)

以下是MoveTowards

的使用方法
void Update()
{
    float step = speed * Time.deltaTime;
    transform.position = Vector3.MoveTowards(transform.position, PositionB, step);
}

LearnMore