Sprite与组之间的处理
原文地址:http://www.phaser.io/examples/v2/arcade-physics/custom-sprite-vs-group。
效果
源代码
window.onload = function () { var game = new Phaser.Game(800, 600, Phaser.AUTO, 'phaser_container', { preload: preload, create: create, update: update }); function preload() { game.load.image('phaser', 'images/phaser/phaser-dude.png'); game.load.spritesheet('veggies', 'images/phaser/fruitnveg32wh37.png', 32, 32); } Vegetable = function (game) { frame = game.rnd.between(0, 35); // 不要包含辣椒(frame 17) if (frame === 17) { frame = 1; } var x = game.rnd.between(100, 770); var y = game.rnd.between(0, 570); Phaser.Image.call(this, game, x, y, 'veggies', frame); }; Vegetable.prototype = Object.create(Phaser.Image.prototype); Vegetable.prototype.constructor = Vegetable; Chilli = function (game) { var x = game.rnd.between(100, 770); var y = game.rnd.between(0, 570); Phaser.Sprite.call(this, game, x, y, 'veggies', 17); game.physics.arcade.enable(this); }; Chilli.prototype = Object.create(Phaser.Sprite.prototype); Chilli.prototype.constructor = Chilli; var sprite; var group; var cursors; function create() { game.physics.startSystem(Phaser.Physics.ARCADE); game.stage.backgroundColor = '#2d2d2d'; // 本例展示了如何检测Sprite和组之间的碰撞 group = game.add.group(); for (var i = 0; i < 70; i++) { if (i < 50) { // 蔬菜组没有物理效果 group.add(new Vegetable(game)); } else { // 辣椒组有物理效果 group.add(new Chilli(game)); } } // 我们控制的角色 sprite = game.add.sprite(32, 200, 'phaser'); game.physics.arcade.enable(sprite); cursors = game.input.keyboard.createCursorKeys(); } function update() { game.physics.arcade.overlap(sprite, group, collisionHandler, null, this); sprite.body.velocity.x = 0; sprite.body.velocity.y = 0; if (cursors.left.isDown) { sprite.body.velocity.x = -200; } else if (cursors.right.isDown) { sprite.body.velocity.x = 200; } if (cursors.up.isDown) { sprite.body.velocity.y = -200; } else if (cursors.down.isDown) { sprite.body.velocity.y = 200; } } function collisionHandler(player, chilli) { // 如果玩家与辣椒发生碰撞,则可以“吃”掉它 chilli.kill(); } }
发布时间:2016/11/20 下午9:55:04 阅读次数:4569