Unity中使用摇杆控制
Unity中使用摇杆控制
本文章由cartzhang编写,转载请注明出处。 所有权利保留。
文章链接:http://blog.csdn.net/cartzhang/article/details/50957100
作者:cartzhang
一、说起摇杆
XBox的摇杆控制器,不知道何种原因,它拒绝在我电脑上工作。
别人给安装驱动,他们都好好的,在这里就是不识别。
只找到了一个数动的就和着使用。
为啥要研究摇杆啊?
因为这边在VR开发中,每次使用VR设置启动的时间较长,又因为有各种硬件,有枪
头盔等一批硬件控制和按钮,所以就想使用摇杆按键来在测试时候代替。
下面就是在Unity中使用摇杆的一些代码。
二、键值
摇杆的键值,在网上搜的:
按钮绘制:按钮灵敏度(Button Sensitivity)为1000;
A = button 0
B = joystick button 1
X = joystick button 2
Y = joystick button 3
LB = joystick button 4
RB = joystick button 5
Back = joystick button 6
Start = joystick button 7
Left Analogue Press = joystick button 8
Right Analogue Press = joystick button 9
坐标轴绘制:模拟坐标轴灵敏度(Analog Axis sensitivity)为1,量化后可以为1000;
Left Analog Horizontal = X Axis
Left Analog Vertical = Y Axis
Triggers = 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 axis
Right Analog Vertical = 4th axis
D-Pad Horizontal = 6th Axis
D-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中Debug输出控制
1 需求: (1)选择在界面.console中输出,并且能够设置保存到文档 (2)控制debug是否输出,可以在debug模式下输出,release模式下不输出 2 参考: 谢谢雨松同学的博客:htt ...
- unity中camera摄像头控制详解
目录 1. 缘起 2. 开发 2.1. 建立项目 2.2. 旋转 2.2.1. 四元数 2.3. 移动 2.3.1. 向量操作 2.4. 镜头拉伸 2.5. 复位 2.6. 优化 1 缘起 我们的产品 ...
- unity中虚拟摇杆的实现
实现效果: 实现: 使用NGUI添加虚拟摇杆背景和其子物体按钮,为按钮Attach boxcollider和ButtionScript.为按钮添加如下脚本: 注意:其中的静态属性可以在控制物体移动的 ...
- unity中添加音量控制的一些步骤
1.先确认要控制的音源(Audio Source)所使用的输出(Output),例如我这里BGM使用的是MainMixer: 2.暴露音量(Volume)参数,让脚本可以控制.这里如果不暴露出来,脚本 ...
- unity中键盘WASD控制。(WS控制物体前后移动,AD控制左右旋转。)
private float rotateSpeed = 30f; private float movespeed = 5; void FixedUpdate() { //第一种控制移动 float h ...
- 关于Unity中摇杆的操作
之前在解决摇杆控制角色的时候使用的是RPG游戏中主角的运动方式,有八个方向,最近找到一个新的方法,可以比较流畅地控制角色各个方向的移动 步骤 1.Easy Touch插件,角色控制器组件 2.在控制角 ...
- [Unity3D]Unity3D游戏开发之使用EasyTouch虚拟摇杆控制人物移动
大家好,欢迎大家关注我的博客,我是秦元培,我的博客地址是blog.csdn.net/qinyuanpei.今天呢,我们来一起学习在Unity3D中使用EasyTouch虚拟摇杆来控制人物移动.虽然Un ...
- 关于Unity中ARPG游戏人物移动(专题十一)
ARPG:动作型角色扮演类游戏 大多数的ARPG游戏都是使用摇杆操作,以第三人称摄像机的方式来跟随主角,实际上人物只走八个方向,上,下,左,右,左上,左下,右下,右上 控制角色移动的思路1: 在ARP ...
- 在Unity中接入Xbox360手柄
提要 本文主要介绍了怎样在Unity中接入Xbox360的手柄. 当我们调Input.GetAxis("Horizontal"),我们调了什么 Unity中全部关于输入的设置都在E ...
随机推荐
- 关于strace的一点东西
好久没写博客了,感觉有点羞愧,认为自己也应该静下心来利用自己可分配的时间去提升自己. 尽管近期在看一些Python的东西,但是认为自己还是不能忘记本行啊,Linux C的一些东西必须一直 ...
- 【ODPS】阿里云ODPS中带分区的表操作
1.创建分区表: 分区表有自己的分区列,而分区表则没有. public static void createTableWithPartition(Odps odps, String createTab ...
- Bean Query 改动Bug的版本号(1.0.1)已公布
改动内容: 修复输入对象被排序的属性不存在或者为Null时出错的bug 在Maven项目中引用 <dependency> <groupId>cn.jimmyshi</gr ...
- MySQL 相邻两条数据相减
<!-- 计算每两次消费的间隔天数 --> SELECT B.MEN_ID,TIMESTAMPDIFF(DAY,B.PRE_DATE,B.CURR_DATE) AS DAYS FROM ( ...
- 一条SQL语句求前面记录的平均值
有算法要求如下: For (i=1,i<=10,i++) { ta[i] = (t[1] + t[2] + ... + t[i]) / i; } 用一条SQL语句实现它: 分别用表变量 @ta ...
- ASP.NET MVC 认证模块报错:“System.Configuration.Provider.ProviderException: 未启用角色管理器功能“
新建MVC4项目的时候 选 Internet 应用程序的话,出来的示例项目就自带了默认的登录认证等功能.如果选空或者基本,就没有. 如果没有,现在又想加进去,怎么办呢? 抄啊.将示例项目的代码原原本本 ...
- luogu2341 [HAOI2006]受欢迎的牛
题目大意 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的“喜欢”是可以传递的——如果A喜欢B,B喜欢C,那么A也喜欢C.牛 ...
- SqlServer还原步骤
SqlServer还原步骤 2009-09-05 10:32:12| 分类: 数据库|字号 订阅 1 . 删除原有数据库 新建数据库 hywlxt 2. 在master 中新建存储过程 k ...
- P2831 愤怒的小鸟 状压dp
这个题主要是预处理比较复杂,先枚举打每只鸟用的抛物线,然后找是否有一个抛物线经过两只鸟,然后就没了. 题干: 题目描述 Kiana 最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上 ...
- 杂项-TMod:常见错误
ylbtech-杂项-TMod:常见错误 1.返回顶部 1. 1.1. {Template Error} TypeError: dateDiff is not a function at Array. ...