我一直在寻找这个答案,我找不到我的问题的答案,因为我的对象不在数组中,而是在舞台上的动画片段中。我试图检测哪个物体引起碰撞,以便我使用这些物体来限制角色的移动。看着所有灌木丛下面的图像,房子和几十个其他物体将被用作阻挡物体。
我找到了一种方法来检测与movieclips子对象的碰撞,但实际上并没有检测到哪个对象发生了这种碰撞。我每次进行一次移动时都尝试循环遍历每个对象,并测试是否存在碰撞,但它从不记录任何命中。
这是我当前正在注册命中的代码。
var background = bGround; // Make reference to the BG in the mainActions
var bgObjects = bGround.bgElements;
//trace(bgObjects.numChildren);
if(bgObjects.hitTestPoint(character.x,character.y,true)) {
trace("character: " + character.x + "," + character.y);
trace("position of hit " + bgObjects.x + "," + bgObjects.y);
}
它嵌套在一个事件监视器内,用于监视按键,因此每次按下按钮时或每次用户移动字符时都会重新测试。我认为在命中测试发生后循环遍历对象是最好的想法,或者在每个运动循环中并特别测试该对象,但无法正常工作。这是一次尝试。
for (var i : Number = 0; i < bgObjects.numChildren; i++) {
var instBgElem = bgObjects.getChildAt(i);
if(character.hitTestPoint(instBgElem.x, instBgElem.y, true)) {
// Check X Left
if (character.x < bgObjects.getChildAt(i)).x {
trace("hit left");
}
// Check X right
if ( character.x > bgObjects.getChildAt(i)).x {
trace("hit right");
}
// Check Y top
if ( character.y < bgObjects.getChildAt(i)).y {
trace("hit top");
}
// Check Y Bottom
if ( character.y > bgObjects.getChildAt(i)).y {
trace("hit bottom");
}
}
}
编辑:我能够在一定程度上获得一段代码,但它确实没有测试在后台对象上发生命中测试的位置。我可能需要找到每个对象的边界框并找出边界框的哪一侧被击中,接受所有帮助。
for (var i : Number = 0; i < bgObjects.numChildren; i++) {
var instBgElem = bgObjects.getChildAt(i);
if(instBgElem.hitTestPoint(character.x,character.y,true)){
if(instBgElem.x > character.x) {
trace("right");
} else if(instBgElem.x < character.x) {
trace("left");
}
if(instBgElem.y > character.y) {
trace("up");
} else if(instBgElem.y < character.y) {
trace("down");
}
}
}
编辑2:问题在于找出命中测试与角色接触的位置,以便我可以限制该移动。我不知道该怎么做,我一直在试验边界框。
var charBounding = character.getBounds(this);
trace("character bounding box" + charBounding);
trace("character bottom: " + charBounding.bottom);
trace("character top:" + charBounding.top);
trace("character left:" + charBounding.left);
trace("character right:" + charBounding.right);
输出角色并在角色移动时更新角色,不知道如何利用这个优势。
字符边界框(x = 85.95,y = 79.05,w = 72.2,h = 72.2) 性格底部:151.25 角色顶部:79.05 性格左:85.95 性格权利:158.15