3D сенсорная эквивалентность для iPad - PullRequest
0 голосов
/ 20 сентября 2018

Я пытался разработать игру с использованием swift, использующего аппаратное трёхмерное сенсорное управление iPhone.Однако, когда я отправлял свое приложение в App Store, оно было отклонено, потому что игра была недоступна для игры на iPad .

Мой вопрос заключается в том, каков наилучший способ реализации аналогичной функциональности для сенсорных устройств без 3D?То, что я делаю сейчас, - это реализация следующего метода

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {

    if self.didStartGame, let touch = touches.first {

        let maximumPossibleForce = touch.maximumPossibleForce
        let force = touch.force
        let normalizedForce = min(force/maximumPossibleForce * 2.5, 1)

        // Added game-related code here to modify scene accordingly

    }

}

При запуске последнего на устройствах без сенсорного 3D, отладка значения touch.maximumPossibleForce возвращает 0.

1 Ответ

0 голосов
/ 24 сентября 2018

Вы не можете обнаружить принудительное касание на устройствах, которые его не поддерживают.

Но, возможно, вы могли бы использовать свойство majorRadius в UITouch.Он дает вам радиус касания.

С радиусом вы можете позволить пользователям, у которых нет устройства с сенсорным 3D, управлять игрой с углом их пальца:

enter image description here

Это код для приведенного выше примера:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    guard let pseudoForce = touches.first?.majorRadius else { return }
    label.text = "\(pseudoForce)"
}

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
    guard let pseudoForce = touches.first?.majorRadius else { return }
    label.text = "\(pseudoForce)"
}

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
    label.text = "-"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...