gpt4 book ai didi

javascript - Phaser - 如何使用 Phaser.js 正确实现街机物理碰撞

转载 作者:行者123 更新时间:2023-11-29 19:25:15 27 4
gpt4 key购买 nike

我在网上浏览了一些教程并查看了文档,但这似乎让我更加困惑。

问题:

所有 Sprite 的物理都在这段代码中初始化:

// 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:更新});

现在我假设这可以很好地像这样初始化物理?

如果是这样,那么我很困惑如何检测 PlayerEvilDave 碰撞,以及如何在碰撞时启动函数(例如 Player死亡或 EvilDave 受伤)。 (字符为 64x64 像素)

如果有人能帮助我,我将不胜感激。

最佳答案

PlayerEvilDave 等是 Sprites 的实例吗?您没有显示代码,因此很难确定。

启用物理的调用应该是这样的:

hal.physics.arcade.enable(x64_guys);

尽管我会完全放弃使用“hal”的做法,而是使用“this”。您不需要将常量作为第二个参数,因为无论如何您都直接在 Arcade Physics 管理器上启用。

上述所有代码都发生在创建函数中吗?如果不是,应该是。

这也是错误的:body.bounce.x = true; Bounce 是一个 Phaser.Point 对象,而不是一个 bool 值,因此它需要一个值分配给它。如果您想启用 100% 的全反射弹跳,则将其设置为 1:body.bounce.x = 1;

要检查 PlayerEvilDave 之间的碰撞,您需要将此添加到您的 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';

}

您可以在网站上的 Sprite 与 Sprite 示例中看到完整的代码。非常值得仔细研究。

关于javascript - Phaser - 如何使用 Phaser.js 正确实现街机物理碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31036601/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com