Unity中使用摇杆控制
来源:互联网 发布:淘宝农村市场调研报告 编辑:程序博客网 时间:2024/05/20 23:35
Unity中使用摇杆控制
本文章由cartzhang编写,转载请注明出处。 所有权利保留。
文章链接:http://blog.csdn.net/cartzhang/article/details/50957100
作者:cartzhang
一、说起摇杆
XBox的摇杆控制器,不知道何种原因,它拒绝在我电脑上工作。
别人给安装驱动,他们都好好的,在这里就是不识别。
只找到了一个数动的就和着使用。
为啥要研究摇杆啊?
因为这边在VR开发中,每次使用VR设置启动的时间较长,又因为有各种硬件,有枪
头盔等一批硬件控制和按钮,所以就想使用摇杆按键来在测试时候代替。
下面就是在Unity中使用摇杆的一些代码。
二、键值
摇杆的键值,在网上搜的:
按钮绘制:按钮灵敏度(Button Sensitivity)为1000;A = button 0B = joystick button 1X = joystick button 2Y = joystick button 3LB = joystick button 4RB = joystick button 5Back = joystick button 6Start = joystick button 7Left Analogue Press = joystick button 8Right Analogue Press = joystick button 9坐标轴绘制:模拟坐标轴灵敏度(Analog Axis sensitivity)为1,量化后可以为1000;Left Analog Horizontal = X AxisLeft Analog Vertical = Y AxisTriggers = 3rd Axis (Left: -1 - 0, Right: 0 - 1) _ (Left Trigger Axis: 9th, Right Trigger Axis: 10th (Both axis are 0-1))Right Analog Horizontal = 5th axisRight Analog Vertical = 4th axisD-Pad Horizontal = 6th AxisD-Pad Vertical = 7th Axis
做为程序,怎么使用代码获取呢?
简单:
using UnityEngine;using System.Collections;public class GetKeyValue : MonoBehaviour { public float speed = 10.0F; public float rotationSpeed = 100.0F; void Update() { detectPressedKeyOrButton(); } public void detectPressedKeyOrButton() { foreach (KeyCode kcode in System.Enum.GetValues(typeof(KeyCode))) { if (Input.GetKeyDown(kcode)) Debug.Log("KeyCode down: " + kcode); } }}
把此代码挂载到任意对象上,然后按下按键看看console中的打印,就知道对应的键值了。
三、控制对象
使用摇杆来控制对象,因为这边在VR开发中,每次使用VR设置启动的时间较长,又因为有各种硬件,有枪
头盔等一批硬件控制和按钮,所以就想使用摇杆按键来在测试时候代替。解放不够用的双手,之前的测试一个人不能完成,需要旋转头盔,需要按下按键,需要鼠标点击,真是需要个多的手啊!!就是这样!!
一个摇杆控制旋转和移动。
这里面,摇杆向前推,控制对象就向前移动,而左右就是控制左右旋转了。有点不符合常理,但是大家若有用就稍微修改下吧
using UnityEngine;using System.Collections;public class StickCameraControl : MonoBehaviour { public float speed = 10.0F; public float rotationSpeed = 100.0F; void Update() { float translation = Input.GetAxis("Vertical") * speed; float rotation = Input.GetAxis("Horizontal") * rotationSpeed; if (Mathf.Abs(translation) <= 0.1*speed) { translation = 0; rotation *= Time.deltaTime; transform.Rotate(0, rotation, 0); } else { translation *= Time.deltaTime; transform.position +=Camera.main.transform.forward * translation; } }}
用来控制枪的旋转和开火的代码。
枪不能自己移动的,只可以旋转。所以代码就如下:
using UnityEngine;using System.Collections;public class StickGunContorl : MonoBehaviour { public float speed = 10.0F; public float rotationSpeed = 100.0F; public KeyCode []FireButton; void Update() { SetFire(); SetRotate(); } void SetFire() { if (Input.GetKeyDown(KeyCode.JoystickButton4) || Input.GetKeyDown(KeyCode.JoystickButton5) || Input.GetKeyDown(KeyCode.Joystick1Button4) || Input.GetKeyDown(KeyCode.Joystick1Button5)) { Debug.Log(Input.mousePosition); } } void SetRotate() { //float translation = Input.GetAxis("RightV") * speed; float rotation = Input.GetAxis("RightH") * rotationSpeed; Debug.Log("gun" + rotation); rotation *= Time.deltaTime; transform.Rotate(0, rotation, 0); }}
代码超级简单。注释没有!!!
要是直接复制代码,运行会报错。原因在于你没有RightH这个东动
怎么来的呢?看这里,看这里……
这在里定义的Input,然后才可以在代码中正确调用的。
四、参考
http://tieba.baidu.com/p/3668735969
——–THE——————END———————–
若有问题,请随时联系!!
非常感谢
- Unity中使用摇杆控制
- Unity使用EasyTouch虚拟摇杆控制角色
- Unity使用easytouch虚拟摇杆控制角色移动
- Unity中实现摇杆功能
- unity使用UGUI创建摇杆
- unity虚拟摇杆控制 Virtual Joystick
- unity摇杆
- Unity+FairyGUI)rpg方向控制的方向盘控制/摇杆
- Unity中虚拟摇杆的简单实现
- 使用EachToucha 虚拟摇杆控制角色移动
- unity EasyTouch虚拟摇杆的使用(边界情况处理)
- unity学习之摇杆
- UGUI实现unity摇杆
- unity制作动态摇杆
- Unity实现虚拟摇杆
- Unity虚拟摇杆
- EasyTouch中虚拟摇杆的使用EasyJoystick
- Arduino 摇杆控制 舵机
- 数据结构——单链表的初操作
- NFS文件系统简介及原理
- 无法访问您试图使用的功能所在的网络位置 无法找到vcredist.msi的解决办法
- 自定义进度条
- Android中LayoutParams总结和用法
- Unity中使用摇杆控制
- HDU 1241/UVa572 Oil Deposits(DFS&BFS)
- [bzoj2154]Crash的数字表格
- CentOS7.0下安装和配置zabbix2.4.5全过程及解决一些遇到的问题
- wave overfly
- 令人困惑的值传递和引用传递
- 解决webview调用 goBack() 返回上一页自动刷新闪白的情况
- 介绍一款神器:Xposed(附教程案例)
- 关于动态规划的一个精彩的入门文章(背包)