0

我正在尝试制作这个使用略微 3D 精灵的自上而下的游戏。我希望能够让玩家走在他遇到的任何物体的前面和后面。

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

有点像那些古老的街机游戏,比如愤怒的街道。

有任何想法吗?

4

1 回答 1

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;
}
于 2012-08-16T18:07:57.043 回答