unity实现3d摇杆 结合leapmotion控制实现VR场景移动

本文介绍了在Unity中如何利用3D摇杆和LeapMotion技术实现虚拟现实场景中的移动控制。作者通过创建3D摇杆UI框架,结合自定义的插值移动实现摇杆自动归位,解决了VR场景中移动的难题。同时,文章讨论了状态管理和碰撞器计数方法来判断手部握持和释放状态。
摘要由CSDN通过智能技术生成

unity实现3d摇杆 结合leapmotion控制实现VR场景移动

Created by miccall (转载请注明出处 miccall.tech

3D UI设想 解决VR场景移动

  • 开发vr很恼火的就是场景的移动 真实地方本来就小,如果vr里面的场景也小,那还玩个啥,所以虚拟现实的场景是很大的 如何实现小空间对大空间的移动,这也是vr开发要解决的问题之一 。

  • 我们老大设想了摇杆操作 我就顺着思路做了一套 先看看基本效果

这里写图片描述

-当手移动中间的球时候 ,就像触碰摇杆一样 ,可以向四周摇动 。
外面的环是一个指示器 当球触发到环的时候,给一个颜色的变化,让用户知道自己将朝哪一个方向运动 。

这里写图片描述

  • 下面是一个围棋场地 用来感受自己在环境中的移动。

  • 摄像机 包括controller都在一个游戏物体上面 也很好移植 ,下面就一步步来展示这个的制作过程 。

3d摇杆的基本框架

这里写图片描述

  • 首先建立一个MianPivot的空物体 它代表着游戏人物 到时候可以自己设定 。
  • 其下呢 ,一个是VR视角 可以选用官方的LMHeadMountedRig 这个预制体 。
  • 另一个就是我门要做的这个摇杆了 。
  • 摇杆分为三部分 BoundaryRing 就是外面的一个指示环 。root是一个中心点 用来归位 sphere是一个移动的球,用手来触碰它 让它在空间中移动,实现摇杆效果 。

实现思路

  • 看过摇杆的自动归位 ,一开始是拿弹簧力来实现,但是弹簧回弹的惯性极其的难掌控 ,来回摆动简直让人抓狂 。于是, 果断放弃了unity的弹簧力 改自己写插值移动 ,让它在手不触碰他的时候,就让它移动到root这个点 。

  • 大概一分析就是这么简单的东西了,但是写起来还是比较烦的,bug极其的多,如何判断手的hold 如何判断移动 回弹的触发条件 等等一系列 做出好的效果还是很不容易的。

  • 还有就是状态的类,球是否是移动的状态 手是否是hold的状态 这个也得写个类来管理

  • 那么物体上呢 ,就很简单了 加一个触发器 当触发的时候 改变他们的状态 。

  • 大家自己建立两个球(一个root点 一个移动的球)并把他们放到一个父物体下面,就可以开始写脚本了。

开始写脚本

  • 先在父类上面建立一个Controller脚本 用来管理游戏移动对象, root和sphere 。
    好 那就先这样写

    public class springController : MonoBehaviour
    {
        [Tooltip("Navigation Controls the walking game object")]
        public GameObject player;
        [Tooltip("Used to move the navigation ball")]
        public GameObject sphere;
        [Tooltip("The root node of the navigation (reset point)")]
        public GameObject root;
        Vector3 sphereposition;
        Ve
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值