Javascript 移相器2-当我拖动另一个精灵时,如何检测?
我正在构建一个Phaser应用程序,在该应用程序中,我能够将一个精灵拖到另一个精灵的顶部,然后将其放到其下方的精灵上,在该阶段,我的代码将与被拖放的精灵和它被拖放的精灵建立关系。我没有为此使用任何物理。这应该会给问题增加一些背景,但“放弃”并不是我想要回答的问题 当在精灵上拖动时,我想改变被拖动精灵的比例,以向用户显示它正在被检测到悬停在它可以掉入的物体上 我可以遍历屏幕上的精灵,检查拖动精灵的坐标是否击中另一个精灵,但如果将其放入dragUpdate函数中,效率会非常低Javascript 移相器2-当我拖动另一个精灵时,如何检测?,javascript,typescript,drag-and-drop,phaser-framework,Javascript,Typescript,Drag And Drop,Phaser Framework,我正在构建一个Phaser应用程序,在该应用程序中,我能够将一个精灵拖到另一个精灵的顶部,然后将其放到其下方的精灵上,在该阶段,我的代码将与被拖放的精灵和它被拖放的精灵建立关系。我没有为此使用任何物理。这应该会给问题增加一些背景,但“放弃”并不是我想要回答的问题 当在精灵上拖动时,我想改变被拖动精灵的比例,以向用户显示它正在被检测到悬停在它可以掉入的物体上 我可以遍历屏幕上的精灵,检查拖动精灵的坐标是否击中另一个精灵,但如果将其放入dragUpdate函数中,效率会非常低 我正在寻找一个替代方案
我正在寻找一个替代方案,在那里我可以从精灵的x/y拖动位置从被拖动的精灵向下进行光线投射,并查看它是否击中另一个精灵。文档在这方面有什么想法吗?我已经用一些工作示例更新了你的小提琴,包括当精灵被拖动到一个目标上时,它的缩小比例 我循环每个目标并检测可拖动的精灵是否在目标内部
function onDragUpdate(sprite, pointer, dragX, dragY, snapPoint) {
var draggableBounds = sprite.getBounds();
for (var i = 0; i < targets.length; i ++)
{
var target = targets[i];
var targetBounds = target.getBounds();
var rect = new Phaser.Rectangle(draggableBounds.x, draggableBounds.y, draggableBounds.width, draggableBounds.height);
if (Phaser.Rectangle.intersects(draggableBounds, targetBounds))
{
sprite.scale.setTo(0.2);
if (!targetBounds.containsRect(sprite.getBounds())) {
sprite.scale.setTo(0.5);
}
else {
game.debug.text(sprite.draggable_custom_id + ' is over ' + target.target_custom_id, 20, 20 );
}
}
函数onDragUpdate(精灵、指针、dragX、dragY、捕捉点){
var draggableBounds=sprite.getBounds();
对于(变量i=0;i
签出小提琴:你不是在寻找类似的东西吗?类似的,这是我想在drag stop上调用的函数,但我有未知数量的精灵来运行此检查,在更新或drag update上循环确实会使风扇旋转。在某个点向场景发射光线可以消除循环的需要,但我没有我不确定这在PhaserJSFIDLE中是否可行,以帮助演示场景: