亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我的 Javascript 鍵盤輸入不適用于我的 Phaser 精靈?

為什么我的 Javascript 鍵盤輸入不適用于我的 Phaser 精靈?

狐的傳說 2022-10-27 14:12:31
我正在嘗試使用 Phaser 制作游戲,并嘗試使用您通常用于 Phaser 的常用鍵盤輸入,但它們并沒有讓我的精靈移動。這是我的移相器代碼(沒有移相器鍵盤輸入):const gameState = {};            const config = {        type: Phaser.AUTO,        width: 850,        height: 650,        backgroundColor: 0xa362d1,        physics: {            default: 'arcade',            arcade: {                gravity: { y: 200 },                enableBody: true,            }        },        scene: {            preload,             create,             update        }    };    var game = new Phaser.Game(config);              function preload (){        this.load.image('boy', 'boy.png')    }    function create(){        gameState.boy = this.add.sprite(400, 550, 'boy').setScale(0.75)           }            function update (){                     }        無論如何,我試圖讓我的精靈移動使用鍵盤輸入,所以我嘗試使用普通的舊 javascript 來完成工作。這是我的javascript代碼:document.addEventListener('keydown', keyDownHandler, false);document.addEventListener('keyup', keyUpHandler, false);var rightPressed = false;var leftPressed = false;var upPressed = false; var downPressed = false;function keyDownHandler(event){    if (event.keyCode == 39){        rightPressed = true;    }    else if (event.keyCode == 37){        leftPressed = true;    }        if (event.keyCode == 40){        downPressed = true;    }    else if (event.keyCode == 38){        upPressed = true;    }}function keyUpHandler(event){    if (event.keyCode == 39){        rightPressed = false;    }    else if (event.keyCode == 37){        leftPressed = false;    }        if (event.keyCode == 40){        downPressed = false;    }    else if (event.keyCode == 38){        upPressed = false;    }}然而,仍然沒有結果。我想知道我的代碼是否存在某種類型的問題,或者我是否有某種類型的語法問題。再次感謝堆棧社區!
查看完整描述

1 回答

?
www說

TA貢獻1775條經驗 獲得超8個贊

我不太明白你為什么要創建一個 keyUp 和一個 keyDown 函數來查看按鍵是否被按下,但如果我可以建議不同的方法。


首先,使用您想要在游戲中使用的鍵創建一個對象,例如:


this.keys = this.input.keyboard.addKeys({

            w: Phaser.Input.Keyboard.KeyCodes.W,

            s: Phaser.Input.Keyboard.KeyCodes.S,

            a: Phaser.Input.Keyboard.KeyCodes.A,

            d: Phaser.Input.Keyboard.KeyCodes.D

        });

其次,您可以創建一個函數來監視這些鍵,如下所示:


function handleMoving() {

        if (this.keys.w.isDown // Or this.keys.w.isUp) {

            

            player.body.setVelocityX(160); // Whatever you want


        } 

        

        else if (this.keys.s.isDown) {

            

            player.body.setVelocityX(-160); // Whatever you want


        } 


// ... and so on

        

}

然后不要忘記調用handleMoving().update()


查看完整回答
反對 回復 2022-10-27
  • 1 回答
  • 0 關注
  • 111 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號