在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
分享到:
相关推荐
本项目“基于stm32和mpu9250的USB HID键盘、鼠标、游戏控制器”旨在利用STM32微控制器与MPU9250传感器结合,实现一个多功能的USB人机交互设备(HID)——既能模拟键盘、鼠标,也能作为游戏控制器使用。这展示了STM32...
《网络游戏-一种具有姿态感测的多用途游戏控制器及系统》是关于现代电子游戏领域的一项创新技术,它涉及到了互动娱乐、人机交互以及传感器技术等多个方面。这项技术的出现,极大地提升了玩家的游戏体验,同时也推动...
最后,压缩包内的"拔河游戏机控制器"可能包含了项目的源代码或详细设计文档,这些资料能帮助学生进一步研究控制器的具体实现,包括编程语言(如C或汇编)、微控制器的选择以及接口设计等。 总的来说,这个资料包...
7. 游戏逻辑与状态管理:为了管理游戏流程,开发者需要编写控制游戏状态的代码,如初始化、游戏开始、游戏结束等。同时,还需要处理游戏规则,如糖果达到Om Nom的嘴、时间限制等。 8. 存档与加载:为了让玩家能够...
1. **Android Studio**:这是Google官方推出的Android应用开发集成开发环境(IDE),它包含了代码编辑器、调试工具、构建系统和模拟器等必备组件。源代码很可能就是用Android Studio创建的项目。 2. **Java或Kotlin...
3. **嵌入式系统**:使用单片资源的系统,通常是指嵌入式微控制器,它们具有集成的CPU、内存和外围接口。在这样的平台上移植NES代码需要考虑到硬件限制,如内存大小、处理速度和IO能力。 4. **代码优化**:由于没有...
将正则表达式解析器集成到 Lua 中,可以让开发者在微控制器上利用正则表达式功能,进行数据验证、模式匹配等操作。 C++ 作为编译语言,能够提供高性能的代码,是实现底层库和嵌入式系统组件的理想选择。将 Lua 的...
6. **版本控制集成**:通常,好的代码编辑器会集成常见的版本控制系统,如Git,方便开发者进行版本管理和协同工作。 7. **自定义设置**:用户可以根据个人偏好调整编辑器的主题、快捷键布局等,以实现个性化的开发...
【正点原子_战舰V3_NES游戏机源代码】是基于STM32F4微控制器的一个项目,其中包含了开发NES(任天堂娱乐系统)游戏机所需的基础源代码。这个项目不仅是一个简单的游戏机实现,它还展示了如何在嵌入式系统中集成和...
3. 输入处理:C语言可以接收键盘、鼠标和游戏控制器等设备的输入,使玩家能够与游戏互动。游戏代码中会有相关函数处理这些输入事件。 4. 存储和加载数据:游戏通常需要读取和保存游戏状态、关卡数据和用户配置。...
Android Studio是Google提供给开发者用于构建Android应用的官方工具,它集成了众多功能,包括代码编辑、调试、性能优化和版本控制等。 在分析这个源代码的过程中,我们可以深入理解以下几个关键知识点: 1. **...
UI设计部分可能包含故事板文件(.storyboard)和相关的视图控制器(ViewController),这些元素共同构成了游戏的外观和交互。 此外,源代码还可能包含资源文件,如图像、音频和字体,这些资源通过Asset Catalogs...
贪吃蛇是一款经典的计算机游戏,它的基本原理是通过控制一个不断增长的蛇来捕食食物,同时避免蛇身碰撞导致游戏结束。在这个项目中,我们关注的是用C语言在CodeBlocks环境下实现的版本。C语言是一种底层编程语言,以...
- 集成测试:整合所有模块进行集成测试,检查整体游戏流程是否顺畅。 - 性能优化:根据测试结果,优化代码性能,减少延迟,提高游戏体验。 7. **代码组织与版本控制**: - 采用良好的编程习惯,编写清晰、可读性...
在本资源中,我们主要探讨的是一个基于Android平台的雷电射击游戏的源代码。"Android雷电射击游戏源代码" 提供了开发此类游戏的完整框架,这为开发者提供了深入学习Android游戏开发的机会,同时也方便了那些希望...
10. **版本控制**:对于大型项目,使用Git等版本控制系统进行代码管理是必要的,它可以帮助开发者跟踪代码变更,协同合作,防止数据丢失。 通过这个Java象棋游戏项目,开发者不仅可以提升Java编程能力,还能学习到...
下面将详细介绍打字游戏源代码可能包含的关键知识点。 1. **用户界面(UI)设计**: - 使用图形用户界面库,如Python的Tkinter或PyQt,JavaScript的HTML/CSS/JS,或C#的Windows Forms/WPF,构建游戏界面。 - UI...
Java简单小游戏代码主要涉及到的是Java编程语言的基础应用和游戏开发的基本概念。对于初学者来说,这是一个很好的实践项目,可以帮助理解面向对象编程的概念以及如何在实际项目中应用它们。以下是这个小游戏可能涉及...
综合来看,"hlsw CS控制器"可能是一个集成有"vipice.dll"和"vipice.exe"的系统,用于管理和控制基于客户端/服务器架构的应用,特别是在游戏服务器环境中。"vipice.dll"提供底层功能支持,而"vipice.exe"则作为用户...
代码可能包含Lua、Python等脚本系统的集成,让开发者了解如何在游戏中使用脚本来控制游戏逻辑。 8. **网络编程**:多人在线游戏需要网络通信。代码可能涉及TCP/IP协议、UDP包传输、同步机制等,帮助开发者理解如何...