phaser的P2引擎设置碰撞组
版本:phaser 2.6.2
引擎: P2物理引擎
场景:实现组内创建精灵以及组与游戏角色IP碰撞
this.create = function() {
// 背景图片
game.add.tileSprite(0, 0, 800, 800, 'background')
// 设置游戏世界大小
game.world.setBounds(0, 0, 800, 800)
// 开启物理系统
game.physics.startSystem(window.Phaser.Physics.P2JS)
// 为世界启用碰撞事件,否则不会收到碰撞回调
game.physics.p2.setImpactEvents(true)
// 开启边界碰撞检测: 左边,右边,上边,下边,碰撞检测
game.physics.p2.setBoundsToWorld(true, true, true, true, false)
// 创建碰撞组
let playerCollisionGroup = game.physics.p2.createCollisionGroup()
//食物
let foot5GroupCollisionGroup = game.physics.p2.createCollisionGroup()
//更新碰撞组事件
game.physics.p2.updateBoundsCollisionGroup()
// 食物
foot5Group = game.add.group()
foot5Group.enableBody = true
foot5Group.physicsBodyType = window.Phaser.Physics.P2JS
//创建组内精灵
for(let i = 0 ; i < 100 ; i++){
let score5 = foot5Group.create(game.world.randomX,game.world.randomY,'atari')
score5.scale.set(0.1)
// 触碰范围
score5.body.setCircle(5)
// 绑定碰撞组
score5.body.setCollisionGroup(foot5GroupCollisionGroup)
// 5分组与玩家碰撞
score5.body.collides([foot5GroupCollisionGroup, playerCollisionGroup])
}
// player
player = game.add.sprite(game.world.centerX, game.world.centerY, 'player')
player.scale.set(0.3)
game.physics.p2.enable(player)
// 触碰范围
player.body.setCircle(28)
// 不旋转
player.body.fixedRotation = true
player.body.setCollisionGroup(playerCollisionGroup)
// 碰撞参数: 碰撞目标,处理方法,this
// 食物
player.body.collides(foot5GroupCollisionGroup, _hitScore5, this)
// 键盘输入
cursors = game.input.keyboard.createCursorKeys()
}
笔记,便日后查阅,如有高见,望不吝指点!非常感谢!!!