Мне нужна помощь в попытке изменить логику в операторе IF в Unity C # - PullRequest
0 голосов
/ 22 февраля 2019

Я использую простой GameObject [], который использует игровые объекты в качестве «navPoints» для перемещения navAgent.

У меня есть метод, который работает просто так:

  public void pickNextNavPoint()
    {
        ++navIndex;
        if (navIndex >= myNavPoints.Length)
            navIndex = 0;

    }

Затем я использую метод:

public void FindDestination()
    {
        GetComponent<NavMeshAgent> 
        ().SetDestination(myNavPoints[navIndex].transform.position);

    }

Это заставляет мой NavAgent перейти в NavPoint, затемследующий и так далее.

У меня простой вопрос: как я могу изменить этот метод, чтобы он работал наоборот, используя ту же простую логику?

1 Ответ

0 голосов
/ 22 февраля 2019

Вы можете сделать что-то вроде этого:

public void PickNextNavPoint() {
    MoveIndex(1);
}

public void PickPreviousNavPoint() {
    MoveIndex(-1)
}

private void MoveIndex(delta) {
    navIndex += delta;
    // Constrain navIndex between 0 and len - 1
    navIndex = Math.Min(Math.Max(0, navIndex), myNavPoints.Length - 1);
}

Кроме того, вы должны ознакомиться с правилами именования для C #, ваши методы должны быть PascalCased, среди прочего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...