2016-02-12 62 views
0

我想让我的运动系统在Unity中,我稍后将用于Oculus。Unity3D一步一步移动

现在我用相机和一个叫做“rb”的刚体创建了一个对象。

// Perform movement 
void PerformeMovement() 
{ 
    if (velocity != Vector3.zero) { 
     rb.position = (rb.position + velocity); 
    } 
} 

我计算我的其他班级的速度。 我想做2件事..

  1. 使运动感觉更像传送。现在它正顺利地转移到一个新的位置。
  2. 步骤后使刚体停止一两秒钟。所以这种压抑感不会像跑步一样。

任何API提示?不想找人为我写信...或者mby链接到类似的移动系统?

主要目标是使运动更平稳,因此我可以绕过造成恶心的冲突。

编辑!

现在我更新了我的代码>

void PerformeMovement() 
{ 
    if (velocity != Vector3.zero) { 
     if (timer % 60 == 1) { 
      rb.MovePosition (rb.position + velocity * 20); 
     } 
    } 

} 

它的工作原理有点像我想,但我怎么能现在处理冲突? 如果步长足够长,它只会穿过物体。如果这个步骤太小,它会卡住,然后随机飞走...

+0

对于你的#2,做一个'private float lastMove;'然后做一个'lastMove = Time.timeSinceLevelLoad;'当你做一个动作时,在你允许之前检查if(lastMove + pauseTime> Time.timeSinceLevelLoad)下一步。 –

+0

Timer是一个随机的int,每次Update()时都会加1。而我的C#经验是2天,所以我不能完全明白你的建议。 –

+0

另外,如果你问Oculus上的[Unity子窗体](https://forums.oculus.com/viewforum.php?f=37),你很可能会让人们更好地了解如何制作好VR体验现场。 –

回答

0

让我们调用你的游戏对象“G1”和该游戏对象“G2”的副本。

您将删除与G1相关的任何物理,并且您将从G2中删除渲染器。这个想法是,G2是G1的某种物理幽灵。也就是说,G2不需要特别的移动规则就可以自由移动,从而可以正确处理碰撞。然后,您可以将G1变换更新为G2变换,以便在视觉上创建所需的移动。

+0

我已经这样做了。我有一个“G2”球体,充当视觉和内部相机,充当“G1” –