1

我正在尝试为一个基于网格的 2D 顶视图棋盘游戏构建一个自制的视线。棋盘上有一个二维数组中的 div,它们全是黑色的,如果玩家在走廊中,它们也是透明的,走廊也是一个带有对象的二维数组。走廊里有各种各样的方块,我需要将它们考虑在内,这样如果 div 出现在玩家所在的走廊中,它们就不会变得透明。

所以我有一个想法,通过 x,y 值对玩家所在的给定走廊中的对象数组进行排序。

corridors[i].sort(
    function(a)
    {
        if(a.y > playerObj.position.y && a.x > playerObj.position.x) return 1;
        if(a.y < playerObj.position.y && a.x < playerObj.position.x) return -1;
        return 0;
    });

但这似乎不起作用。将 div 背景颜色更改为透明仍然从数组的第一个索引开始。我希望它从走廊中的玩家位置开始,然后向外工作,如下所示:

O 只是一个图块,P 是玩家,X 是刚刚透明的图块

噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢

噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢!

噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢

噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢噢!

但是为了让这个场景起作用,我需要找到如何正确地对我的数组进行排序,我希望你能帮我解决这个问题。我在网上看到的例子都有参数a和b,所以不能使用外部变量吗?我是否应该将玩家位置创建为新对象并将其推送到数组然后对数组进行排序?

4

1 回答 1

0

好的,我想我解决了。我只是将排序函数存储在一个新数组中并使用它。

于 2018-06-14T10:01:45.927 回答