Unity一HTC 手柄控制主角行走
来源:互联网 发布:安踏网络授权 编辑:程序博客网 时间:2024/05/16 11:44
实现:头盔转动控制移动的方向,手柄中touchPad的上、下、左、右控制移动的向前、向左、向右、向后移动
- 设置头部
- using UnityEngine;
- using System.Collections;
- public class ChildTransform : MonoBehaviour
- {
- public Transform same;
- // Use this for initialization
- void Start () {
- }
- // Update is called once per frame
- void FixedUpdate () {
- transform.localEulerAngles = new Vector3(0,same.localEulerAngles.y,0);
- transform.localPosition = new Vector3(same.localPosition.x, 0, same.localPosition.z);
- }
- }
- 设置移动
- using UnityEngine;
- using System.Collections;
- public class Move : BaseClass
- {
- /// <summary>
- /// 手柄位置
- /// </summary>
- SteamVR_TrackedObject tracked;
- /// <summary>
- /// 玩家
- /// </summary>
- public Transform player;
- /// <summary>
- /// 方向
- /// </summary>
- public Transform dic;
- /// <summary>
- /// 速度
- /// </summary>
- public float speed;
- void Awake()
- {
- //获取手柄控制
- tracked = GetComponent<SteamVR_TrackedObject>();
- }
- // Use this for initialization
- void Start () {
- }
- // Update is called once per frame
- void FixedUpdate () {
- var deviceright = SteamVR_Controller.Input((int)tracked.index);
- //按下圆盘键
- if (deviceright.GetPress(SteamVR_Controller.ButtonMask.Touchpad))
- {
- Vector2 cc = deviceright.GetAxis();
- float angle = VectorAngle(new Vector2(1, 0), cc);
- //下
- if (angle > 45 && angle < 135)
- {
- player.Translate(-dic.forward * Time.deltaTime * speed);
- }
- //上
- else if (angle < -45 && angle > -135)
- {
- //Debug.Log("上");
- player.Translate(dic.forward * Time.deltaTime * speed);
- }
- //左
- else if ((angle < 180 && angle > 135) || (angle < -135 && angle > -180))
- {
- //Debug.Log("左");
- player.Translate(-dic.right * Time.deltaTime * speed);
- }
- //右
- else if ((angle > 0 && angle < 45) || (angle > -45 && angle < 0))
- {
- //Debug.Log("右");
- player.Translate(dic.right * Time.deltaTime * speed);
- }
- }
- }
- /// <summary>
- /// 根据在圆盘才按下的位置,返回一个角度值
- /// </summary>
- /// <param name="from"></param>
- /// <param name="to"></param>
- /// <returns></returns>
- float VectorAngle(Vector2 from, Vector2 to)
- {
- float angle;
- Vector3 cross = Vector3.Cross(from, to);
- angle = Vector2.Angle(from, to);
- return cross.z > 0 ? -angle : angle;
- }
- }
0 0
- Unity一HTC 手柄控制主角行走
- Unity开发HTC vive 一、手柄按钮
- Unity开发HTC vive 一、手柄按钮
- Unity开发HTC vive 一、手柄按钮
- Unity +HTC VIVE 虚拟现实开发— 手柄控制
- unity开发 HTC vive手柄控制 手柄上各个按钮的点击事件
- (Unity)HTC ViVe 之手柄震动
- HTC Vive手柄圆盘控制角色移动
- Unity +HTC VIVE 虚拟现实开发— 手柄震动
- unity中检测不到HTC vive手柄的解决方案
- Unity的Htc Vive手柄按钮检测(转)
- HTC vive开发:关于手柄按键对接控制
- VR开发中HTC的手柄控制按键设置(1)
- VR开发中HTC手柄发射射线的控制
- HTC vive开发:关于手柄按键对接控制
- Unity HTC VIVE 手柄 接入(手柄上的按键都有说明)
- Unity HTC VIVE 手柄 接入(手柄上的按键都有说明)
- Unity HTC VIVE 手柄 接入(手柄上的按键都有说明)
- 为什么action使用的多例模式,但是service层和dao层用的是单例模式
- docker CE&&EE版本centos安装
- java项目防止跨站访问防止越过登录直接访问
- Android手机UI设计---”知乎“界面外观模仿篇(四)---在Fragment里使用ScrollView嵌套自定义listview
- Hibernate @Entity 错误: No identifier specified for entity XXX
- Unity一HTC 手柄控制主角行走
- Java中字符数组、String类、StringBuffer三者的相互转换
- Java-Properties文件
- delphi中DoubleBuffered用途
- OpenGL透视投影gluPerspective
- HDU-1176-免费馅饼
- 《Android开发艺术探索》读书笔记----第二章:Android IPC 简介、多进程模式
- webpack多页应用架构专题系列-一套配置吃天下
- leetcode解题之 Search a 2D Matrix java 版(在二维矩阵中查找)