我正在使用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
并获得了相同的结果。)
答案 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);
}