`
7090
  • 浏览: 274037 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

游戏控制器介绍及代码集成

阅读更多
在iOS7中,苹果加强了对游戏开发的支持,其中一个功能就是增加了Game Controller Framework (GameController.framework)可以让你在程序中发现游戏控制器硬件并进行配置。通过Game Controller Framework可以通过无线或者蓝牙连接iOS设备。当控制器可用的时候,该Framework会通知应用程序。
Game Controller Framework 支持三种类型的控制器
• 标准的控制器:该控制器具有一个方向键,一个暂停按钮,四个按钮和两个肩部按钮。
• 扩展的控制器:该控制器跟标准控制器类似,但它可以有两个杆和四个肩部按钮。
• 扩展无线控制器:跟上面的控制器类似,但它以无线方式工作,不需要将IOS设备放置到控制器里面。




软件环境:ios7 + xcode5
操作系统:OSX 10.8.4
实现过程:
1:将游戏控制器的Connet和Disconnet状态进行事件注册
- (void)configureGameControllers {

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(gameControllerDidConnect:) name:GCControllerDidConnectNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(gameControllerDidDisconnect:) name:GCControllerDidDisconnectNotification object:nil];

[GCController startWirelessControllerDiscoveryWithCompletionHandler:^{

// we don't use any code here since when new controllers are found we will get notifications
}];
}


实现相应注册事件的代码
- (void)gameControllerDidConnect:(NSNotification *)notification {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Warning"
message:@"Game controller connected. Do you want to use it?"
delegate:self
cancelButtonTitle:@"No"
otherButtonTitles:@"Yes", nil];
[alert show];
}
- (void)gameControllerDidDisconnect:(NSNotification *)notification {

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Warning"
message:@"Game controller has disconnected."
delegate:nil
cancelButtonTitle:@"Ok"
otherButtonTitles:nil, nil];
[alert show];
}



2:遍历所有的控制器,并对其按键进行注册
- (void)configureConnectedGameControllers {
for (GCController *controller in [GCController controllers]) {
[self setupController:controller ];
}
}

- (void)setupController:(GCController *)controller 
{
/** 对X,Y,A,B键位进行注册
**/
GCControllerButtonValueChangedHandler XYABButtonHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed) {
};
if (controller.gamepad) {
controller.gamepad.buttonA.valueChangedHandler = XYABButtonHandler;
controller.gamepad.buttonB.valueChangedHandler = XYABButtonHandler;
controller.gamepad.buttonX.valueChangedHandler = XYABButtonHandler;
controller.gamepad.buttonY.valueChangedHandler = XYABButtonHandler;
}
if (controller.extendedGamepad) {
controller.extendedGamepad.buttonA.valueChangedHandler = XYABButtonHandler;
controller.extendedGamepad.buttonB.valueChangedHandler = XYABButtonHandler;
controller.extendedGamepad.buttonX.valueChangedHandler = XYABButtonHandler;
controller.extendedGamepad.buttonY.valueChangedHandler = XYABButtonHandler;
}
/** 对肩部的键位进行注册
**/
GCControllerButtonValueChangedHandler LRShoulderHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed) {
};
if (controller.gamepad) {
controller.gamepad.leftShoulder.valueChangedHandler = LRShoulderHandler;
controller.gamepad.rightShoulder.valueChangedHandler = LRShoulderHandler;
}
if (controller.extendedGamepad) {
controller.extendedGamepad.leftShoulder.valueChangedHandler = LRShoulderHandler;
controller.extendedGamepad.rightShoulder.valueChangedHandler = LRShoulderHandler;
}
/**对方向键进行注册
**/
GCControllerDirectionPadValueChangedHandler LRThumbHandler = ^(GCControllerDirectionPad *dpad, float xValue, float yValue) {
};
if (controller.extendedGamepad) {
controller.extendedGamepad.leftThumbstick.valueChangedHandler = LRThumbHandler;
controller.extendedGamepad.rightThumbstick.valueChangedHandler = LRThumbHandler;
}
if (controller.gamepad.dpad) {
controller.gamepad.dpad.valueChangedHandler = dpadMoveHandler;
}

}



参考:《iOS 7 Game Development》
  • 大小: 29.8 KB
分享到:
评论

相关推荐

    Unity3D游戏开发技术详解与典型案例

    第6章介绍了天空盒、虚拟按钮与摇杆、声音、光源、地形引擎、角色动画,以及角色控制器等开发常用的技术;第7章介绍了Unity 3D中的着色器和着色器语言——ShaderLab;第8章介绍了PlayerPrefs类、Network Class(网络...

    matlab打靶小游戏的代码-RobotCasserole2017:RobotCasserole2017FRC游戏的机器人源代码,FirstS

    matlab打靶小游戏的代码 RobotCasserole2017 Robot Casserole 2017 FRC 游戏 First Steamworks 的机器人源代码。 内容 以下是我们今年所做工作的高级概述: 机器人关键部件的实现 用于实时驱动信息、调试信息和值...

    飞行器姿态控制matlab代码-aerial-manipulation:空中操纵

    大疆N3飞行控制器 DJI集成块2-G车载计算机 OptiTrack运动捕捉系统 2个Nooploop UWB发射器 罗技F710无线游戏手柄 定制的末端执行器,用于空中摇滚 作为硬件在环(HIL)仿真运行 在安装了DJI Assistant的情况下将DJI ...

    Knife Hit飞刀大师-终极挑战Unity休闲游戏项目源码C#

    Knife Hit飞刀大师-终极挑战Unity休闲游戏项目源码C# 支持Unity版本2018.1.2或更高 Knife Hit - Ultimate Challenge + Appodeal Ads + IAP + Unity Project 是一款令...游戏、广告和音频控制器 评论良好的代码 易于定制

    Unity赛车游戏飙车游戏开发框架Drag Racing Framework v1.3.1

    通用汽车控制器- 它只是一个与任何汽车模型兼容的组件,包含许多可配置参数和完整的汽车物理特性。 要创建一辆新车,只需添加脚本- 就像魔术一样简单。 进度系统。它 允许您添加级别和游戏利润 - 积分/金钱。 购物...

    JAVA上百实例源码以及开源项目源代码

    EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean...

    基于stm32开发的usb hid 复合设备-键盘、鼠标、游戏pad,利用重力感应控制PC游戏。.zip

    STM32是由意法半导体(STMicroelectronics)公司推出的基于...综上所述,STM32微控制器以其强大的内核性能、丰富的外设集成、完善的开发支持和广泛的市场应用,为嵌入式系统设计提供了高度灵活且极具竞争力的解决方案。

    chaos:Twitch控制混乱(基于USB控制器拦截)

    这将直接拦截控制器输入,而不是与游戏模块集成 它可以在任何游戏(带有支持的控制器)上运行,包括在非改装的主机游戏上 它必须在能够充当USB主机和设备的兼容硬件上运行,例如Raspberry Pi 4 由于硬件的限制,这...

    SR9900是一个高集成度、超低功耗、单芯片USB 2.0转10/100M以太网控制电路替换RTL8152B

    为各类应用增加低成本、小型封装、即插即用的快速以太网功能,可用于台式电脑、笔计本电脑、超便携式电脑、平板电脑、托架/端口复制器/扩展坞、游戏机、智能家居及任何有 USB接口的嵌入式设备SR9900内部集成USB 2.0...

    Maxim推出串行接口按键开关控制器

    Maxim推出MAX7359 2线式接口、低EMI按键开关控制器,可检测多达64个按键的按下和弹起。为实现这一功能,MAX7359为每个按键的按下和弹起提供了独立的代码并保存于FIFO寄存器中,从而实现对多按键开关的监视。为降低...

    Android 3D游戏开发技术宝典-OpenGL ES 2.0 (吴亚峰) 源代码

    1.3.2 eclipse集成开发环境的搭建 7 1.3.3 创建并启动模拟器 9 1.4 hello android应用程序的开发 11 1.4.1 第一个android应用程序 12 1.4.2 android应用程序的项目结构 14 1.4.3 android应用程序的...

    ASP.NET猜数游戏的设计与开发(源代码+thesis).zip

    ASP.NET MVC是一种成熟的开发框架,它采用模型-视图-控制器的设计模式,将应用程序的逻辑和界面分离,提供了更好的代码组织和可维护性。我们选择ASP.NET MVC框架是因为它具有良好的可扩展性和灵活性,可以轻松地添加...

    Maxim推出2线式接口按键开关控制器MAX7359

    Maxim推出MAX7359 2线式接口、低EMI按键开关控制器,可检测多达64个按键的按下和弹起。为实现这一功能,MAX7359为每个按键的按下和弹起提供了独立的代码并保存于FIFO寄存器中,从而实现对多按键开关的监视。为降低...

    Er:“第三人称角色控制器统一”

    高度可定制的第三人称角色,可快速设置游戏原型无需资产商店中的任何资产。 全部使用纯C#创建 使用刚体的基于物理的特征 支持不同的摄像头视图,例如普通的3RD人动作摄像头,自顶向下的摄像头,侧面摄像头 内置...

    matlab集成c代码-Fing-Fong:一个用C语言开发并与MATLAB集成在一起的PingPong游戏,使用Engine函数通过手指移动

    一个用C语言开发并与MATLAB集成在一起的PingPong游戏,使用Engine函数通过手指移动来控制蝙蝠。 如何设置和使用它 要求 : 摄像头 带USB网络摄像头硬件支持包的MATLAB 2015Ra Microsoft Visual Studio 2010 步骤:将...

    matlab代码做游戏-stars:星星

    matlab代码做游戏很棒的星星 我的GitHub明星精选清单! 内容 阿帕奇会议 -适用于在团队环境中工作的视觉设计师的常规工作流程清单,他们将与开发人员共享视觉探索和内容。 Arduino的 -ESP8266移动Rick Roll专属门户 ...

    codi:用 Grails 编写的简单代码审查应用程序

    与 MongoDB 集成模型用于同步 git 存储库的作业v.0.2 用于 git 存储库的 REST 控制器安全 REST 控制器Git 存储库的完整集成测试v.0.3 注册用户、团队等。 登录/注销用户、团队等。 电子邮件v.0.4 与 AngularJS 集成...

    Python, PyGame, and Raspberry Pi Game Development, 2nd Edition.pdf

    您将了解面向对象编程(OOP)以及设计模式,如模型视图控制器(MVC)和有限状态机(FSM)。无论是使用Windows、MacOS、Linux还是Raspberry PI,您都可以释放Python和PyGames的力量来创建漂亮的游戏。这本书还包括完整的...

    Easy Character Movement 1.8.1.unitypackage

    Easy Character Movement是一种功能强大的高性能,但基于Rigidbody的角色控制器却易于使用。 它可以用于任何类型的角色,从玩家到NPC到敌人,以及各种各样的游戏,例如平台游戏,第一人称视角,第三人称视角,冒险,...

Global site tag (gtag.js) - Google Analytics