在补间对象上进行碰撞检测

时间:2014-03-06 12:17:32

标签: javascript craftyjs

我无法让它工作,看起来像补间对象不会触发'Moved'事件?

我正在屏幕上填充一个对象,并且需要检查它是否与播放器相撞(通过键盘事件上下飞行)。如果我为玩家添加“Moved”支票,它会起作用,但如果玩家静止不动该怎么办:-)

所以我需要检查补间对象何时移动,如果它击中了播放器

不会触发任何事件:

        // astroid
        Crafty.e('astroid, 2D, DOM, Color, Tween, Collision')
            .attr({ x: 600, y: 550, w: 50, h: 200 })
            .color('#8e44ad')
            .tween({ x: -50 }, 4000)
            .bind('Moved', function () {

                console.log('moved');

                if (this.hit('player1')) {
                    console.log('player hit 1');
                }
            })
            .onHit('player', function () {
                console.log('player hit 2');
            });

2 个答案:

答案 0 :(得分:0)

已更新:

我在plugin使用collisions($div1, $div2) function interval() { timeout = setTimeout(function () { if (collisions($('.player1'), $('.astroid'))) { alert('true'); } else{ interval(); } }, 25); } interval()

所以,

{{1}}

WORKING DEMO

愿这有用......

答案 1 :(得分:0)

“Moved”是一个特殊事件,像“Multiway”这样的组件使用。

更基本的事件就是“移动”,它由2D component直接实现 - 而不是绑定到该事件。

许多人所做的只是使用“EnterFrame”检查每帧一次的碰撞。如果您需要在碰撞后直接 ,那么绑定到“移动”将提供该功能。