У меня есть немного кода для поиска написанной координаты, теперь мне нужно, чтобы он работал над сеткой - PullRequest
0 голосов
/ 30 апреля 2020

Короче говоря, я пишу игру в песочнице на основе Voxel, в которой вместо кубов используются усеченные октаэдры, поскольку это единственная другая форма, которую я могу найти, которая упакована на 100%. Они выглядят так: (псевдоним = мекон) enter image description here

Положение мекона основано на его основании, и они имеют высоту 2 единицы. Так что мекон в [0, 0, 0], центр в [0, 1, 0], но это не важно, так как мне нужно получить [0, 0, 0]

У меня есть пока этот код:

    Vx = this.transform.position.x;
    Vy = this.transform.position.y;
    Vz = this.transform.position.z;

    if (Vy >= 0f && Vy <= 2f)
    {
        if (((Vy >= 0f && Vy <= .5f) && (Mathf.Abs(Vx) + Mathf.Abs(Vz) <= Vy + .5f)) ||
            ((Vy >= .5f && Vy <= 1f) && ((Mathf.Abs(Vx) + Mathf.Abs(Vz) <= Mathf.Abs(Vy) + .5f) && (Mathf.Abs(Vx) <= 1f) && (Mathf.Abs(Vz) <= 1f))) ||
            ((Vy >= 1f && Vy <= 1.5f) && ((Mathf.Abs(Vx) + Mathf.Abs(Vz) <= Mathf.Abs(Vy - 2f) + .5f) && (Mathf.Abs(Vx) <= 1f) && (Mathf.Abs(Vz) <= 1f))) ||
            ((Vy >= 1.5f && Vy <= 2f) && (Mathf.Abs(Vx) + Mathf.Abs(Vz) <= Mathf.Abs(Vy - 2f) + .5f)))
            Debug.Log("Normal");
        else
            Debug.Log("Offset");
    }
    else
        Debug.Log("Outside");

(vX, vY и vZ - координаты игрового объекта, который я использую в качестве ссылки). Все, что он делает, это говорит мне, если я нахожусь внутри Мекона в [0, 0, 0]

Мне нужно, чтобы все в этом пространстве возвращало [0, 0, 0] на основе введенных координат. Тем не менее, мне также нужно, чтобы он работал для упакованной области меконов. Поэтому, если координаты находятся внутри мекона в координатах [5, 7, 3], я получу эти числа, пока я нахожусь внутри мекона.

Некоторые примечания: координаты могут быть только [нечетными, нечетными, нечетный] или [четный, четный, четный]. [5, 8, 1] не является возможным местом для мекона. Поэтому у меня была идея собрать значения заданных координат, а затем вычесть 1 из значения, которое не соответствует 2 нечетным / четным значениям.

Первый оператор if не должен быть нужен в конце, и каждое число волхвов c должно быть заменено на ... у? что-то, я просто предполагаю, что это основано на у.

...