Phaser-如何使用Phaser.js正确实现Arcade物理碰撞
Phaser - How to properly implement Arcade Physics Collisions with Phaser.js
我在网上浏览了一些教程,并查看了文档,但这似乎让我更加困惑。
问题:
所有精灵的物理都在这个代码中初始化:
// Store all Sprites in an Array for easy access
var x64_guys = [Player, Dave, EvilDave];
// Sprite physics properties. Give the little guys some life.
hal.physics.arcade.enable(x64_guys, Phaser.Physics.ARCADE);
for(var j=0; j<x64_guys.length;j++){
x64_guys[j].body.collideWorldBounds = true;
x64_guys[j].body.bounce.x = true;
x64_guys[j].body.bounce.y = true;
}
其中hal
等于new Phaser.Game(window.innerWidth, window.innerHeight, Phaser.AUTO, "stage", { preload: preload, create: create, update: update });
现在我假设这可以很好地初始化这样的物理?
如果是这样的话,那么我对如何检测Player
和EvilDave
碰撞以及在碰撞时启动功能(例如Player
死亡或EvilDave
受伤)感到相当困惑。(字符为64x64像素)
如果有人能帮助我,我将不胜感激。
是精灵的Player
、EvilDave
等实例吗?你没有显示代码,所以很难确定。
启用物理学的呼吁应该是这样的:
hal.physics.arcade.enable(x64_guys);
尽管我会放弃使用"hal"的做法,而是使用"this"。你不需要常数作为第二个参数,因为你无论如何都要在街机物理管理器上启用直接。
以上所有代码都发生在create函数中吗?如果不是,应该是。
这也是错误的:body.bounce.x = true;
反弹是一个Phaser.Point对象,而不是布尔值,因此它希望为其指定一个值。如果您想启用100%全反射反弹,请将其设置为1:body.bounce.x = 1;
要检查Player
和EvilDave
之间的冲突,您需要将其添加到update
函数中:
function update() {
// object1, object2, collideCallback, processCallback, callbackContext
game.physics.arcade.collide(Player, EvilDave, collisionHandler, null, this);
}
function collisionHandler (obj1, obj2) {
// The two sprites are colliding
game.stage.backgroundColor = '#992d2d';
}
您可以在网站上的"精灵与精灵"示例中看到这方面的完整代码。值得仔细研究一下。
- 如何使用动画实现纸张推车
- 客户端服务器REST API captcha实现
- 如何实现此布局
- Meteor忘记了密码的实现
- 使用Native Sockets在Android中实现WebSockets
- 在样板文件中实现Ajax
- instanceof是如何在JavaScript中实现的
- 如何正确实现Jquery多选小部件
- 实现一个建立在google.com之上的自定义搜索引擎
- 多个组件是如何实现的
- window.location使用jquery mobile实现chrome跳转
- 如何在OpenERP中实现网络摄像头
- Node.js使用Series函数(模式?)实现流控制时出现意外结果
- javascript加密实现,包括可信否认
- 实现比较方法的最佳实践是什么;s的比较类型是在运行时选择的
- 如何让程序员在javascript中实现正确的回调
- 如何使用自定义辅助对象(handler)实现嵌套的每个循环
- AngularJS智能表全局配置实现
- Expressjs/AngularJS:实现req-flash后出错
- Phaser-如何使用Phaser.js正确实现Arcade物理碰撞