使用Unity3D在VR中捕获对象的一种改进方法

在VR中执行的最常见的动作之一就是取走,移动,旋转和扔掉对象,因此在VR开发中进行编程的通常动作之一就是处理此类交互的一致方式。 我已经与Unity合作多年,开发视频游戏和VR应用程序,并且尝试了多种抓取对象的方法,在解释最近发现的更好的新方法之前,我将以利弊方式对其进行解释。 育儿+运动刚体 如果您以前使用Unity3D进行开发,首先想到的就是这个想法。 抓住物体时,使其成为玩家手的子代并将其设置为运动学的(不受物理影响)。 grabbedGameObject.transform.parent = hand.transform; grabbedGameObject.getComponent().isKinematic = true; 效果很好,物体可以顺畅地跟随手的位置和旋转,但是它具有不便的运动刚体,只能检测到刚体碰撞器的碰撞,如下表所示。 表格来自:https://docs.unity3d.com/Manual/CollidersOverview.html 刚体对性能不利,应将其用于模拟物理,并且应牢记仅将其用于此目的。 因此,我们应该将“刚体”用于玩家可以抓取和投掷的物体,而不是用于墙壁和其他静态物体。 当然,您可以将对象设置为非运动学的,但是每次碰撞时,它将使它在玩家的手上移动。 对于休闲体验而言这可能很有趣,但对于真正的严肃游戏体验而言却毫无意义。 想象一下在VR中使用一把剑,剑的每次击中都错开,最后剑指向玩家的手。…