javascript PixiJS排序精灵

sc4hvdpw  于 2023-01-07  发布在  Java
关注(0)|答案(2)|浏览(125)

我想知道是否有人可以帮助我..寻找一个在舞台上排序孩子的想法。目前我有Map,mapObjects和舞台上的播放器工作以及。

//let say room contain everythings going in the room, background, object, player
  let room = new PIXI.Container();
//start zsorting them
  room.children.sort((a, b) => {
    
     if(a.y < b.y) return -1; //the player will go behind correctly
  };

所以现在的事情是,一个有一对夫妇的对象去前面的其他对象,但球员需要去后面的一个,这一个必须留在前面的其他对象。我应该怎么做,如果我想让他们排序正确
抱歉,我可能解释不好

qvtsj1bj

qvtsj1bj1#

先创建一个ground容器并将其添加到舞台。使其包含地面上的东西(兔子永远不会出现在它们后面)。再创建一个up容器,其中包含从地面上站立的所有东西。在添加ground容器后添加up容器。

let room = new PIXI.Container();
let ground = new PIXI.Container();
room.addChild(ground);

// .. add children to ground here

let up = new PIXI.Container();
room.addChild(up);

// add tower, player, bushes to up here.

您不必对stage的子级进行排序,因为它们的顺序永远不会改变,您需要对up容器的子级进行排序。

up.children.sort((a, b) => a.y - b.y)

不要按z排序,而是按y排序,因为它只与它们在舞台上的垂直位置有关。如果兔子靠近屏幕顶部,你希望它在靠近底部的东西(如塔)后面,从而看起来更靠近观众。

xoefb8l8

xoefb8l82#

background.z = 1;
tower.z = 2; // big object
player.z = 3;
towerObject.z = 4; // the object which rabbit should be behind

let room = new PIXI.Container();
// supposing sprites above are children of room Container
room.children.sort((a, b) => {
  if(a.z < b.z) {
    return -1;
  } else if (a.z > b.z) {
    return 1;
  } else {
    return 0;
  }
};

相关问题