AcessibilityFaceCursor 版本 0.0.7

AcessibilityFaceCursor 版本 0.0.7

João Batista 维护。



  • 作者:João Batista
  • By João Batista

AcessibilityFaceCursor

Build Status Version License Platform

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)方法负责接收所有消息。例如,使用PositionAttackStartGame消息

  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 文件获取更多信息。(可以拿去,玩玩,改进,只要能帮到别人,然后只把我放在版权里就好!)