繁体   English   中英

当我添加 this.physics 行时,Phaser ARCADE 物理不起作用

[英]Phaser ARCADE physics not working when i add this.physics line

我是 Phaser 的新手,我尝试在其中制作游戏。
为了添加物理,我遵循了phaser.io物理教程。
这是我的代码👇

 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <style> body { margin: 0; padding: 0 } canvas { width: 100% } </style> <body> <!-- <script src="https://cdn.jsdelivr.net/npm/phaser@3.55.2/dist/phaser.min.js"></script> --> <script src="https://cdnjs.cloudflare.com/ajax/libs/phaser/3.60.0-beta.3/phaser-arcade-physics.js"></script> <script> let config={ type: Phaser.AUTO, width: 1000, height: 500, backgroundColor: '#2bff00', physics: { default: 'matter', arcade: { gravity: {y: 0}, debug: true } }, scene: { preload: preload, create: create, update: update } } let game = new Phaser.Game(config); let enemy1dir = 1, enemy2dir = 2, enemy3dir = 3, enemy4dir = 4, enemy5dir = 5; function preload() { this.load.image('player', 'boydoctor.png'); this.load.image('enemy', 'coronavirus.png'); } let player, enemy1, enemy2, enemy3, enemy4, enemy5; function create() { this.physics.world.setBounds(0,0, 1000, 500); this.player = this.add.sprite(50, 250, 'player'); this.player.setScale(.2, .2); this.enemy1 = this.add.sprite(150, 50, 'enemy'); this.enemy1.setScale(.05, .05); this.enemy2 = this.add.sprite(300, 50, 'enemy'); this.enemy2.setScale(.05, .05); this.enemy3 = this.add.sprite(450, 50, 'enemy'); this.enemy3.setScale(.05, .05); this.enemy4 = this.add.sprite(600, 50, 'enemy'); this.enemy4.setScale(.05, .05); this.enemy5 = this.add.sprite(750, 50, 'enemy'); this.enemy5.setScale(.05, .05); } function update() { let height = this.sys.game.config.height; if (this.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.UP).isDown) this.player.y -= 2; if (this.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.DOWN).isDown) this.player.y += 2; if (this.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.LEFT).isDown) this.player.x -= 2; if (this.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.RIGHT).isDown) this.player.x += 2; if (this.enemy1.y > height - 50) enemy1dir = -1; else if (this.enemy1.y < 50) enemy1dir = 1; if (this.enemy2.y > height - 50) enemy2dir = -2; else if (this.enemy2.y < 50) enemy2dir = 2; if (this.enemy3.y > height - 50) enemy3dir = -3; else if (this.enemy3.y < 50) enemy3dir = 3; if (this.enemy4.y > height - 50) enemy4dir = -4; else if (this.enemy4.y < 50) enemy4dir = 4; if (this.enemy5.y > height - 50) enemy5dir = -5; else if (this.enemy5.y < 50) enemy5dir = 5; this.enemy1.y += enemy1dir; this.enemy2.y += enemy2dir; this.enemy3.y += enemy3dir; this.enemy4.y += enemy4dir; this.enemy5.y += enemy5dir; } </script> </body> </html>

在这个当我添加this.physics.world.setBounds(0,0, 1000, 500); 行有一个错误,但是当我删除它时,它可以正常工作。 如果这种技术是错误的,那么我应该使用哪种技术将 ARCADE Physics 添加到游戏中?

我不确定这是否是一个大问题,但我在您的配置中注意到您将“matter”作为默认设置,但您想使用“arcade”。 也许将默认值更改为“街机”可能会奏效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM