AS3 - 改变MC相对于另一个的深度

时间:2012-08-16 17:55:22

标签: actionscript-3 movieclip

我正在努力制作这款自上而下的游戏,它使用了轻微的3D精灵。我希望能够让玩家走在他前面和后面的任何物体前面。

就像,如果他在另一个物体后面一定距离,他会移动到它后面,如果他更靠近另一个物体的前面,他就会移动到它前面。

有点像愤怒的街道那样的旧街机游戏。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

每次玩家移动时,您需要评估每个适用项目的y位置,并根据该位置对z-order / childIndex进行排序。

所以如果您的所有对象都是'走在后面/前面,你的角色在一个叫做前景的父精灵中:

function sortZ(){
    var arrayOfStuff:Vector<DisplayObject> = new Vector<DisplayObject>();

    var i:int;
    for(i=0;i<foreground.numChildren;i++){
        arrayOfStuff.push(foreground.getChildAt(i));
    }

    arrayOfStuff.sort(sortArrayByY);

    for(i=0;i<arrayOfStuff.length;i++){
        foreground.setChildIndex(arrayOfStuff[i],i);
    }
}

function sortArrayByY(valA:DisplayObject, valB:DisplayObject):int {
    if(valA.y == valB.y) return 0;
    if(valA.y > valB.y) return 1;
    return -1;
}