Проблема с игровой площадкой на новом форм-факторе - PullRequest
0 голосов
/ 18 февраля 2019

Для учебы мне нужно создать игру на iOS (наподобие космических захватчиков).На самом деле, я застрял в игровой зоне: мне нужно, чтобы пулю можно было вытянуть из максимального значения положения x независимо от форм-фактора.Действительно, мой код прекрасно работает на старом форм-факторе (как iPhone 8).Однако в новом форм-факторе (iPhone X, XS ..) планета может исчезнуть со всего экрана.

(я новичок в Swift, поэтому я знаю, что в моем коде много ошибок).Но я думаю, что проблема в том, что я делю на целое число.

Первая картинка: что я хочу (работает на iPhone 8) Вторая: Моя проблема.

Спасибо заВы помогаете (и извините за мой плохой английский, французы, ахаха).

перевод:

  • zone_de_jeu = game_area

  • largeur_jouable = width_playable

  • marge_largeur = width_margin

  • hauteur_jouable = height_playable

  • 1028 * marge_hauteur = height_margin

введите здесь код

 var zone_de_jeu: CGRect
    override init(size: CGSize) {
        let max_ratio_aspect: CGFloat = 16.0 / 9.0
        let largeur_jouable = size.height / max_ratio_aspect
        let marge_largeur = (size.width - largeur_jouable) / 2
        let hauteur_jouable = size.width / max_ratio_aspect
        let marge_hauteur = (size.height - hauteur_jouable) / 2 
        zone_de_jeu = CGRect(x: marge_largeur, y: marge_hauteur, width: largeur_jouable, height: hauteur_jouable)
        super.init(size: size)

let initialisation_mouvement_planete = touch.location(in: self)
            let mouvement_planete = touch.previousLocation(in: self)
            let arrive_final_planete_x = initialisation_mouvement_planete.x - mouvement_planete.x

            planete.position.x += arrive_final_planete_x

            if planete.position.x > zone_de_jeu.maxX - planete.size.width / 6.5 {
                planete.position.x = zone_de_jeu.maxX - planete.size.width / 6.5
            }

            if planete.position.x < zone_de_jeu.minX + planete.size.width / 6.5 {
                planete.position.x = zone_de_jeu.minX + planete.size.width / 6.5
            }

Должен ли я изменить мой делитель на что-то более общее?

...