unity3d SteamVR2.0版本利用手柄圆盘控制物体移动

1.首先看一下界面,创建一个VRController作为空物体,添加CharacterController组件,并且创建一个脚本命名为VRController,吧VR预制体拖入VRController

2.给VR相机,添加SteamVR_Camera脚本

3.点击Window窗口,点击SteamVR Input

4.绑定自己的按键(不会去百度搜)

5.绑定完成后保存一下,然后开始写代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Valve.VR;
public class VRController : MonoBehaviour
{public float m_Gravity = 30.0f;public float m_Sensitivity = 0.1f;public float m_MaxSpeed = 1.0f;public float m_RotateIncrement = 90f;public SteamVR_Action_Boolean m_RotatePress = null;public SteamVR_Action_Boolean m_MovePress = null;public SteamVR_Action_Vector2 m_MoveValue = null;private float m_Speed = 0.0f;private CharacterController m_CharacterController = null;private Transform m_CameraRig = null;private Transform m_Head = null;private void Awake(){m_CharacterController = GetComponent<CharacterController>();}private void Start(){m_CameraRig = SteamVR_Render.Top().origin;m_Head = SteamVR_Render.Top().head;}private void Update(){HandleHeight();CalculateMovement();SnapRotation();}private void HandleHeight(){float headHeight = Mathf.Clamp(m_Head.localPosition.y, 1, 2);m_CharacterController.height = headHeight;Vector3 newCenter = Vector3.zero;newCenter.y = m_CharacterController.height / 2;newCenter.y += m_CharacterController.skinWidth;newCenter.x = m_Head.localPosition.x;newCenter.z = m_Head.localPosition.z;m_CharacterController.center = newCenter;}private void CalculateMovement(){Vector3 orientationEuler = new Vector3(0, m_Head.eulerAngles.y, 0);Quaternion orientation = Quaternion.Euler(orientationEuler);Vector3 movement = Vector3.zero;if (m_MovePress.GetStateUp(SteamVR_Input_Sources.Any))m_Speed = 0;if (m_MovePress.state){m_Speed += m_MoveValue.axis.y * m_Sensitivity;m_Speed = Mathf.Clamp(m_Speed, -m_MaxSpeed, m_MaxSpeed);movement += orientation * (m_Speed * Vector3.forward);}movement.y -= m_Gravity * Time.deltaTime;m_CharacterController.Move(movement * Time.deltaTime);}private void SnapRotation(){float snapValue = 0.0f;if (m_RotatePress.GetStateDown(SteamVR_Input_Sources.LeftHand))snapValue = -Mathf.Abs(m_RotateIncrement);if (m_RotatePress.GetStateDown(SteamVR_Input_Sources.RightHand))snapValue = Mathf.Abs(m_RotateIncrement);transform.RotateAround(m_Head.position, Vector3.up, snapValue);}
}

总结:这是为了自己方便总结的东西,当然了 能帮到大家最好了。

unity SteamVR利用手柄合理移动相关推荐

  1. Unity SteamVR获取手柄按钮触发事件

    在unity如何获取VR手柄的按钮 1.首先创建一个C#Script并绑定在任意gameobect上, using UnityEngine; using System; using System.Co ...

  2. unity steamvr中手柄模型的替换

    具体教程看下面的文档 https://www.jianshu.com/p/b9326d55457a

  3. 《分布式虚拟现实系统(DVR)》(Yanlz+Unity+SteamVR+分布式+DVR+人工智能+边缘计算+人机交互+云游戏+框架编程+立钻哥哥+)

    <分布式虚拟现实系统(DVR)> <分布式虚拟现实系统(DVR)> 版本 作者 参与者 完成日期 备注 YanlzVR_DVR_V01_1.0 严立钻 2019.07.11 # ...

  4. (每日更新)《虚拟现实VR资讯》(Yanlz+Unity+SteamVR+云技术+5G+AI=VR云游戏=云渲染+人机交互+立钻哥哥+==)

    虚拟现实(Virtual Reality) 虚拟现实简称VR,是一种可以创建和体验虚拟世界的计算机仿真系统,它利用计算机生成一种模拟环境,是一种多源信息融合的.交互式的三维动态视景和实体行为的系统仿真 ...

  5. Unity + SteamVR + VIVE Pro进行动作捕捉

    Unity + SteamVR + VIVE Pro进行动作捕捉 软件信息 VIVE Pro 硬件信息 vive pro 只可以使用2个基站,并且只能使用vive tracker 2.0一下的追踪器 ...

  6. 《Linux内核剖析》(Yanlz+VR云游戏+Unity+SteamVR+云技术+5G+AI+Makefile+块设备驱动+字符设备驱动+数学协处理器+文件系统+内存管理+GDB+立钻哥哥+==)

    <Linux内核剖析> <Linux内核剖析> 版本 作者 参与者 完成日期 备注 YanlzLinux_Kernel0.12_V01_1.0 严立钻 2020.02.06 # ...

  7. 《孩子,为你自己读书》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+多多图书馆+志存当高远+读万卷书如行万里路+术业有专攻+读书是对思想的一种升华+立钻哥哥++==)

    <孩子,为你自己读书> ##<孩子,为你自己读书>发布说明: ++++"孩子,为你自己读书":是对"修身养性治国平天下"的综合探索:== ...

  8. 《UnityAPI.ScriptableObject脚本化对象》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+CreateInstance+List+立钻哥哥++OK++)

    <UnityAPI.ScriptableObject脚本化对象> 版本 作者 参与者 完成日期 备注 UnityAPI_ScriptableObject_V01_1.0 严立钻 2020. ...

  9. 《UnityAPI.GUI界面》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+GUI+DrawTexture+FocusControl+Toggle+立钻哥哥++OK++)

    <UnityAPI.GUI界面> 版本 作者 参与者 完成日期 备注 UnityAPI_GUI_V01_1.0 严立钻 2020.07.23 #<UnityAPI.GUI界面> ...

最新文章

  1. Django中的常用命令
  2. MTK for Google AttestationKey介绍
  3. worksteal thread pool
  4. 阿里云明确生态边界:不做SaaS、被集成
  5. 基于c++11新标准开发一个支持多线程高并发的网络库
  6. 【Vegas原创】重建Exchange 2007 OWA的虚拟目录
  7. 【IntelliJ】IntelliJ IDEA的安装破解及使用
  8. C++_C++中的关键字_标识符命名规则_数据类型之整形_short_int_long_longlong---C++语言工作笔记010
  9. 【LeetCode】贪心算法--分发糖果(135)
  10. 常用MIME类型(Flv,Mp4的mime类型设置)(转载)
  11. 马斯克宣布退出OpenAI,全身心投入特斯拉与SpaceX
  12. 13.Serving Frontend Files
  13. JavaScript 复习之 XMLHttpRequest 对象
  14. ddpush java_DDPush-任意门消息推送-开源推送服务器-推送-消息推送-信息推送-物联网推送...
  15. tesseract-ocr安装简体中文语言包
  16. 傻傻分不清桃花,杏花,樱花,梨花,李花,海棠花?
  17. Spark Streaming官网重点整理
  18. Python爬虫——selenium爬取网易云评论并做词云
  19. 【嵌入式工程师的30岁总结】 真实
  20. 【ThreeJs】利用Depth Peel技术,解决模型半透明出现的碎三角面问题

热门文章

  1. freemarker模板生成word文档踩坑记录
  2. 移动机顶盒搭建网页服务器,超级简单搭建自己的私人影视库
  3. 带大家读python数据分析一书(三)
  4. Router-Link详解
  5. 液晶显示器LCD与LED的区别
  6. [锐捷客户端]提示虚拟网卡加载失败解决办法 - macOS系统
  7. 修建道路(最小生成树)
  8. CTF之旅WEB篇(3)--ezunser PHP反序列化
  9. centos部署http代理+解决国内服务器TGbot
  10. 达达php源码,达达房卡麻将二次开发VIP系统学习课程