應開發一個簡單的H5小遊戲需要,使用了H5遊戲框架Phaser,如果手寫各種效果代碼,怕是要寫到頭禿,因此必須借用網上開源的引擎了。
Phaser GitHub地址:https://github.com/photonstorm/phaser
Phaser 國內粉絲文檔、論壇小站:https://www.phaser-china.com/
根據官方Demo案例接星星(collectStar)改編代碼
源代碼在:https://github.com/channingbreeze/games
個人需求:
1.需要兩個精靈進行對戰
2.兩個精靈分別使用WASD 和 ↑←↓→進行控制
遇到問題:
1.因爲剛剛接觸Phaser,Demo中使用的
game.input.keyboard.createCursorKeys()
僅能獲取到 up/left/down/right 的按鍵事件
2.因爲代碼問題,需要監聽按下事件和取消按下事件,否則精靈不是一幀一幀的動,而是會滑行
解決方式:
1.方向鍵的監聽方式沒有改動,仍然使用
//創建按鍵方向 ↑←↓→
cursors=game.input.keyboard.createCursorKeys();
而WASD則使用
//創建WASD按鍵
A = game.input.keyboard.addKey(Phaser.Keyboard.A);
D = game.input.keyboard.addKey(Phaser.Keyboard.D);
2.將player1和player2的監聽判斷分開,都進行如果沒按下的控制
詳細script代碼爲(部分已省略)
<script>
var game = new Phaser.Game(800,600,Phaser.CANVAS,'parent',{
preload:preload,//資源預加載
create:create,//創建場景
update:update//邏輯實現
});
function preload() {
console.log('資源加載');
。。。
}
var player1;//用戶一
var player2;//用戶二
var cursors;//輸入
var A;//鍵盤A
var D;//鍵盤D
function create() {
console.log('創建場景')
。。。
//創建按鍵方向 ↑←↓→
cursors=game.input.keyboard.createCursorKeys();
//創建WASD按鍵
A = game.input.keyboard.addKey(Phaser.Keyboard.A);
D = game.input.keyboard.addKey(Phaser.Keyboard.D);
}
function update() {
console.log('遊戲循環');
。。。
//player1使用上下左右
if (cursors.left.isDown) {
player1.body.velocity.x=-150;
player1.animations.play('left');
} else if (cursors.right.isDown) {
player1.body.velocity.x=150;
player1.animations.play('right');
} else {
player1.bame=4;//精靈圖第4幀
player1.body.velocity.x=0;//加上這個判斷則每按一次運動一次否則直接滑翔
}
//player2操作:AD
if (A.isDown) {
player2.body.velocity.x=-150;
player2.animations.play('left');
} else if (D.isDown) {
player2.body.velocity.x=150;
player2.animations.play('right');
} else {
player2.body.velocity.x=0;//加上這個判斷每沒按一次運動一次否則直接滑翔
player2.frame=4;//精靈圖第4幀
}
}
</script>