热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

提升BB10平台Unity游戏的手柄兼容性与操作体验

在BB10上增加对Unity游戏的手柄支持在北欧游戏大会上,我们展示了在黑莓10的辅助下使用您最喜爱的手柄和一个微型的HDMI电缆连接到电视机搭建一个游戏控制系统是一件多么容易

在BB10上增加对Unity游戏的手柄支持

在北欧游戏大会上,我们展示了在黑莓10的辅助下使用您最喜爱的手柄和一个微型的HDMI电缆连接到电视机搭建一个游戏控制系统是一件多么容易的事情。Unity的开发人员喜欢它并且想知道他们的游戏如何可以利用这一点。这篇博文将告诉你添加黑莓10手柄支持是多么容易。

背景

黑莓10的原生SDK提供了一个原生手柄API支持以下游戏手柄

  1. Moga Pro Game controller
  2. SteelSeries Free controller
  3. Gametel controller
  4. Nintendo Wii Remote

以后还会有更多的游戏手柄将被支持,并且这种API的原生游戏不需要改变自己的代码来支持它们。

Unity SDK使用上面列出的手柄提供的即插即用支持来进入系统API。该API允许访问连接手柄的名称,轴值和当前按下的按钮。

让我们看看如何设置并充分利用黑莓10的手柄支持Unity游戏。

第1步:配置手柄的模拟摇杆

你需要做的第一件事是设置输入设置项目设置,如下图所示:

image04

如果你的游戏将受控于模拟操纵杆,设置涉及指定名称轴手柄上的模拟摇杆。例如,一个自上而下的射击游戏,用模拟操纵杆控制球员的运动和其他射门方向,将需要4个轴进行设置:

轴1 – 对应于右操纵杆的水平运动(X轴)

轴2 – 对应于右操纵杆的垂直运动(Y轴)

轴3 – 对应的水平移动左摇杆(第3轴)

轴4 – corresponsds的左摇杆(第4轴的垂直运动)

下图所示为一个参考设置:

image03

有一个很酷的功能就是2个操作杆可以在BB10上立刻配对。如果你的游戏支持多人游戏的话,你可以便捷的启动第二个操作杆。

第二步:配置手柄按钮

其实,这里不需要配置。手柄的按键已经预先映射到KEYCODE,可以直接开始你的游戏了。例如:Moga Pro和SteelSeries的手柄KEYCODE在BB10上的映射如下所示:

image00

image01

第三步:读取手柄输入

下面的C#脚本显示了集成游戏手柄的支持是多么的简单:

using UnityEngine; 
using System.Collections; 
using System;

public class PlayerJoystickClass : MonoBehaviour {

private Transform originalTransform; 
private string currentButton; 
private float[] axisInput = new float[4];

// Use this for initialization 
void Start () { 
for(int i = 0; i axisInput[i] = 0.0f;

}

// Update is called once per frame 
void Update () {

// Get the Gamepad Analog stick’s axis data 
axisInput[0] = Input.GetAxisRaw(“Axis 1″); 
axisInput[1] = Input.GetAxisRaw(“Axis 2″); 
axisInput[2] = Input.GetAxisRaw(“Axis 3″); 
axisInput[3] = Input.GetAxisRaw(“Axis 4″);

// Get the currently pressed Gamepad Button name 
var values = Enum.GetValues(typeof(KeyCode)); 
for(int x = 0; x if(Input.GetKeyDown((KeyCode)values.GetValue(x))){ 
currentButton = values.GetValue(x).ToString(); 

}

// Transform the object. 
transform.Translate(0, 0, axisInput[1] * 0.05f); 
transform.Rotate(0, 0, axisInput[2]*3);

if (currentButton.CompareTo(“Joystick1Button0″)) 

// Fire something 

}

// Show some data 
void OnGUI() 

GUI.TextArea(new Rect(0, 0, 250, 40), “Current Button : ” + currentButton);

GUI.TextArea(new Rect(0, 50, 250, 40), “Axis 1 : ” +  axisInput[0]); 
GUI.TextArea(new Rect(0, 100, 250, 40), “Axis 2 : ” +  axisInput[1]); 
GUI.TextArea(new Rect(0, 150, 250, 40), “Axis 3 : ” +  axisInput[2]); 
GUI.TextArea(new Rect(0, 200, 250, 40), “Axis 4 : ” +  axisInput[3]); 

}

首先,我们定义一个浮动方向来接受从模拟操纵杆获得的4轴输入值和一个字符串来识别当前按下的按钮。要获得一个轴的值,我只是简单的调用Input.GetAxisRaw(),然后用它来改造我的对象。当前按下的按钮,可以通过简单地检查上述手柄映射对应的KEYCODE。

注:许多游戏手柄仍然不支持模拟操纵杆(例如:Wii,Gametel等。),有关通过方向键控制为核心的游戏是值得加入的。

image02

第4步:触摸控制和手柄之间切换

假设你的蓝牙是打开的,并且和手柄是配对的,你将可以通过简单地检测输入来探测到你的手柄。在你的脚本中更新获取到的手柄的名字为“BlackBerry Gamepad”。当配对之后,你就可以关闭所有触摸手柄然后把游戏设置到“控制台模式”,然后使用真正的手柄来控制了。

注:“BlackBerry Gamepad”为公测期间所有BB10支持的游戏手柄返回的标识符。我建议在正式发布之后再次检查BB10返回的手柄标识符有无任何变化。

现在你们知道了。你的Unity游戏将可以获得模拟手柄的支持,更棒的是我们将致力于让他支持所有很酷的手柄,而且并不需要去改变任何一行代码。

任何问题、评论、关注等等可以直接发送邮件到 rmadhavan@blackberry . com 或者直接在推特上联系 @rmadhavan7 .



推荐阅读
author-avatar
苦咖啡青柠檬
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有