Phaser 3 изменяет входные значения в зависимости от ориентации - PullRequest
0 голосов
/ 22 октября 2019

Я пытаюсь заставить Phaser 3 позволить мне вращать холст и использовать разные значения для ввода.

В настоящее время я могу заставить игру вращаться, когда меняется ориентация экрана, но все позиции ввода перепутаныи до сих пор использую старую систему координат.

Как этого добиться, когда холст поворачивает учетную запись системы ввода без необходимости переписывать менеджер ввода.

добавление этого стиля вмой указатель вращает холст

 @media only screen and (orientation:landscape) {
            body {
                transform: rotate(90deg);
            }
        }

Я пытался установить размеры игры для размера окна просмотра, кажется, ничто не меняет ввод.

Также я достиг этого эффекта, изменив размер холста и вращая камеру. Но, похоже, вход не влияет и на повернутую камеру.

        this.game.scale.on( 'orientationchange', ( orientation ) => {
            if ( orientation === Phaser.Scale.PORTRAIT ) {
                // this.gameContainer.setRotation( 0 );
                //this.gameContainer.setPosition( 0, 0 );
                //this.game.scale.setGameSize( 720, 1280 );


            } else if ( orientation === Phaser.Scale.LANDSCAPE ) {
                // Width-height-ratio of game resolution
                let game_ratio = ( 9 * 32 ) / ( 15 * 32 );

                // Make div full height of browser and keep the ratio of game resolution
                let div = document.getElementById( 'content' );
                // div.style.width = ( window.innerHeight * game_ratio ) + 'px';
                // div.style.height = window.innerHeight + 'px';

                // Check if device DPI messes up the width-height-ratio
                let canvas = document.getElementsByTagName( 'canvas' )[ 0 ];

                let dpi_w = ( parseInt( div.style.width ) / canvas.width );
                let dpi_h = ( parseInt( div.style.height ) / canvas.height );

                let height = window.innerHeight * ( dpi_w / dpi_h );
                let width = height * 0.6;

                canvas.style.width = width + 'px';
                canvas.style.height = height + 'px';

                this.cameras.main.setRotation( 1.5 );
            }
        } );
...