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 阅读次数:5675
