【发布时间】:2019-08-27 04:52:51
【问题描述】:
我曾经问过这个问题,但我仍然没有弄清楚如何解决这个问题。 我正在尝试通过更改 transform.position 来移动 4 个统一游戏对象和 SteamVR 播放器的位置。这真的很好用,但它看起来不太好,因为感觉就像你正在瞬间传送到新位置。
所以我想要的是使用 Vector3.MoveTowards 移动对象。但是我尝试了多种方法,但它不起作用。我有以下不同代码的情况: -> 对象甚至不动 -> 物体瞬间移动
我目前使用的是以下。
更新方法:
private void Update()
{
if (Condition)
{
ZoomIn();
}
}
放大方法:
private void ZoomIn()
{
switch (ZoomLevel)
{
case 1:
SetZoomLevel(20, 40);
ZoomLevel++;
break;
case 2:
SetZoomLevel(40, 60);
ZoomLevel++;
break;
case 3:
break;
}
}
SetZoomLevel(运动实际开始的地方,所以问题出在哪里):
private void SetZoomLevel(float height, float distance)
{
Fade(ObjectToMove1, height, distance);
Fade(ObjectToMove2, height, distance);
Fade(ObjectToMove3, height, distance);
Fade(ObjectToMove4, height, distance);
}
这应该会触发动画
IEnumerator Fade(GameObject teleportObject, float height, float distance)
{
while (Vector3.Distance(teleportObject.transform.position, new Vector3(0, height, distance)) > 0.001f)
{
// Speed = Distance / Time => Distance = speed * Time. => Adapt the speed if move is instant.
teleportObject.transform.position = Vector3.MoveTowards(teleportObject.transform.position, new Vector3(0, height, distance), 10 * Time.deltaTime);
yield return null;
}
}
不知何故,这不起作用。
我希望有人可以帮助我。
提前致谢。
【问题讨论】: