【问题标题】:Phaser: show text when sprites overlapPhaser:当精灵重叠时显示文本
【发布时间】:2016-09-05 18:41:13
【问题描述】:

当我的两个精灵重叠时,我正在尝试想办法在视口的左上角添加文本。其中一个是物品,另一个是我的角色。当我单击一个键时,我已经可以检测到重叠甚至“选择”项目(杀死精灵)。不过,我想要一个文字,上面写着“单击“E”来挑选剑!”在碰撞功能激活时出现,当我通过捡起精灵杀死精灵时,文字会消失。

我尝试将文本包含在碰撞函数本身中,但我想这样我会多次渲染文本(fps 下降很多),我只想创建一次并根据我的目的将其删除。我的代码:

function collisionHandler(dude,the_sword) {
pickObject.onDown.add(function () {
    the_sword.kill();
}, this);
}

game.physics.isoArcade.overlap(dude, the_sword, collisionHandler, null, this);

// message saying to pick // Where to put this?
var style = { font: "30px Arial", fill: "#ff0044"};
var pick_message = this.game.add.text(0,20,"Click 'E' to pick up the sword!",style);
pick_message.fixedToCamera = true;

你知道怎么做吗?

【问题讨论】:

    标签: phaser-framework


    【解决方案1】:

    在您的“创建”功能中:

    var style = { font: "30px Arial", fill: "#ff0044"};
    var pick_message = this.game.add.text(0,20,"Click 'E' to pick up the sword!",style);
    pick_message.fixedToCamera = true;
    pick_message.visible = false;
    

    然后:

    function collisionHandler(dude,the_sword) {
    pick_message.visible = true;
    pickObject.onDown.add(function () {
        the_sword.kill();
        pick_message.visible = false;
    }, this);
    }
    
    game.physics.isoArcade.overlap(dude, the_sword, collisionHandler, null, this);
    

    类似的东西应该可以。如果要执行其他操作,例如开门,可以使用:

    pick_message.setText("Click 'Q' to open the door!");
    

    您不必每次都创建新文本,您可以将其用于不同目的。

    【讨论】:

    • 这似乎是一个很好且简单的解决方案。然而,现在当我的角色“接触”另一个精灵时,它会卡在里面,不能再移动了……知道为什么吗?
    • 这是一个很好的方法,我要添加的唯一评论是在碰撞处理程序中没有onDown.add。当您添加一个匿名函数时,它实际上会添加它们的负载(只要精灵保持重叠)。相反,我会在 create 函数中添加 onDown 信号,或者让重叠回调设置一个标志,让它知道现在可以检查它,或者类似的东西。简而言之,处理程序可能会被调用数百次,所以要小心其中的内容:)
    • @PhotonStorm 我尝试设置一个在激活碰撞处理程序时会更改的变量。我将 on.down 放在 create 函数上,并根据变量的值进行了 if 语句。只有等于1,onDown才能被激活。但是我不能再选择这个项目了......有什么想法吗?
    • 发表一个要点,从你的描述中很难猜到,对不起。
    • 最简单的方法是在 click 函数中进行检查,以测试它们是否重叠。如果是,让函数继续执行。如果没有,那就保释。我不熟悉 iso 插件,但我希望 overlap 返回一个可用于此检查的布尔值。
    猜你喜欢
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    相关资源
    最近更新 更多