【问题标题】:Unity3D finding object in rectangleUnity3D在矩形中查找对象
【发布时间】:2015-11-13 14:39:54
【问题描述】:

我想获取两点之间的所有对象(在一个矩形中)。它应该是相对于网络,而不是相对于屏幕。我不想检查游戏中的每个对象是否都在矩形中。

我想从以下两个角度来做。绿点是鼠标前后的位置。 对不起,我的英语不好。

【问题讨论】:

    标签: unity3d cursor


    【解决方案1】:

    假设您有代表每个对象的二维游戏对象数组

    objects = new GameObject[sizeX][sizeY];
    

    然后你需要获取两个被点击对象的索引(不确定你想如何确定这一点,你可以为每个对象制作一堆碰撞器,然后使用 OnMouseDown 和光线投射,或者 Unity 的内置检查对象是否是单击,或仅根据鼠标位置和对象所在位置的硬编码值确定单击了哪个对象。

    获得两个单击对象的索引后,这两个索引之间的每个对象都是矩形的成员。问题是您不确定循环应该朝哪个方向前进(例如,您单击第一个对象,然后单击第 5 个对象,然后该轴的循环变为 ++,但如果您单击第 5 个,然后单击第 1 个,则循环变为 --)。

    我们这样确定方向:

    int indexX1;
    int indexY1;
    int indexX2;
    int indexY2;
    int dirX;
    int dirY;
    
    if(indexX1 > indexX2) dirX = 1; else dirX = -1;
    if(indexY1 > indexY2) dirY = 1; else dirY = -1;
    
    for(int i = indexX1; i * dirX < indexX2 * dirX; i+=dirX){
       for(int j = indexY1; i * dirY < indexY2 * dirY; i+=dirY){
          //your code goes here
       }
    }
    

    由于数学术语,这个带有 dir 的东西有效:

    x > y

    -x

    例如。

    5 > 3|

    -5

    【讨论】:

    • 但最大的问题是我必须一直检查游戏中每个对象的位置我想画这样的矩形:/也许我应该把世界分成块什么的,所以检查一切都会没有必要。
    猜你喜欢
    • 1970-01-01
    • 2020-06-25
    • 2010-11-12
    • 1970-01-01
    • 2010-10-11
    • 2021-06-08
    • 2022-06-09
    • 1970-01-01
    • 2013-07-08
    相关资源
    最近更新 更多