Phaser 2 - 如何检测我何时拖动另一个精灵?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Phaser 2 - 如何检测我何时拖动另一个精灵?相关的知识,希望对你有一定的参考价值。
我正在构建一个Phaser应用程序,我可以在另一个sprite的顶部拖动一个sprite并将其拖放到它下面的sprite上,在那个阶段我的代码将创建一个与删除的sprite和它被删除的sprite的关系。 。我没有使用任何物理学。这应该为问题添加一些上下文,但'drop'不是我想要回答的问题。
在拖动精灵的同时,我想改变拖动的精灵的比例,以向用户显示它被检测为悬停在它可以落入的东西上。
我可以遍历屏幕上的精灵并检查拖动的精灵的坐标是否会击中另一个精灵但是放入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 );
}
}
结帐小提琴:https://jsfiddle.net/22zpsbna/2/
以上是关于Phaser 2 - 如何检测我何时拖动另一个精灵?的主要内容,如果未能解决你的问题,请参考以下文章
html 在http://burnmind.com/tutorials/dr上发布的“如何将精灵的拖动运动限制在Phaser的X和Y轴上”教程的代码