AcessibilityFaceCursor
Requisitos
- iOS 13.0 +
- 仅适用于配备 TrueDepth 摄像头的设备,例如 X 代和更高版本的 iPhone。(暂时如此)
安装
AcessibilityFaceCursor 在 CocoaPods 上可用。为了安装,只需在 Podfile 中输入以下命令即可:
pod 'AcessibilityFaceCursor'
AccessibilityFaceAnchorViewController 初始设置
AccessibilityFaceAnchorViewController 是从 UIViewcontroller 继承的类,也就是说,通过多态,它可以替换当前 UIViewcontroller 类以使用其功能。这个 pod 使用了手机上三个需要用户授权的功能。它们是:
- 隐私 - 摄像头使用描述
- 隐私 - 麦克风使用描述
- 隐私 - 语音识别使用描述
第一个用于捕捉用户头部运动,第二个和第三个用于当操作选项为一个语音命令时。如果没有这三个请求,项目将报错。
AccessibilityFaceAnchorViewController
修改viewcontroller继承为AccessibilityFaceAnchorViewController后,用户的脸部捕捉将会自动启动,屏幕上会出现跟随用户脸部移动的光标。
final class MenuScene: SKScene, MKMenuScene {
var matchmaker: Matchmaker?
func didAuthenticationChanged(to state: Matchmaker.AuthenticationState) {
}
func willStartGame() {
//Presenting Scene example:
view?.presentScene(GameScene(), transition: .crossFade(withDuration: 1.0))
}
}
class GameScene: SKScene, MKGameScene {
var multiplayerService: MultiplayerService
func didReceive(message: Message, from player: GKPlayer) {
//Your Implementation
}
func didPlayerConnected() {
//Your Implementation
}
}
! MenuScene must be final class
在willStartGame()
方法中呈现场景
func willStartGame() {
view?.presentScene(GameScene(), transition: .crossFade(withDuration: 1.0))
}
要呈现匹配器,请调用MenuScene中的presentMatchmaker函数或将其关联到按钮动作。示例
startButton.actionBlock = presentMatchMaker
游戏场景符合MKGameScene后,必须关联场景
override func didMove(to view: SKView) {
multiplayerService.gameScene = self
//...
}
您可以通过multiplayerService.players
访问匹配中的所有玩家。示例:分配场景中的所有玩家
func setupPlayers() {
//...
multiplayerService.players.forEach {
let player = SpaceShip(gkPlayer: $0, texture: SKTexture(imageNamed: "ship"))
allPlayersNode[$0] = player
addChild(player)
}
}
在GameViewController中实例化匹配器和菜单场景
if let skView = view as? SKView {
let matchmaker = Matchmaker(authenticationViewController: self)
let menuScene = MenuScene(matchmaker: matchmaker)
skView.presentScene(menuScene)
}
创建自定义消息
创建一个符合Message协议的结构体。示例
struct Position: Message {
var point: CGPoint, angle: CGFloat
}
发送消息
在您的GameScene中调用MultiplayerService的send(_ message: Message)
方法。示例
let position = Position(point: position, angle: angle)
multiplayerService.send(position)
接收消息
GameScene中的didReceive(message: Message, from player: GKPlayer)
方法负责接收所有消息。例如,使用Position
、Attack
和StartGame
消息
func didReceive(message: Message, from player: GKPlayer) {
guard let playerNode = allPlayersNode[player] else { return }
switch message {
case let position as Position:
playerNode.changePlayer(position: position.point, angle: position.angle)
case let startGame as StartGame:
//Start game Logic
case let attack as Attack:
//Player attack Logic
default:
break
}
}
作者
若昂·巴蒂斯塔,[保密邮箱地址]
许可证
AcessibilityFace 可在 MIT 许可证下使用。详见 LICENSE 文件获取更多信息。(可以拿去,玩玩,改进,只要能帮到别人,然后只把我放在版权里就好!)