Если заявление с Game.IsKeyDown не работает, как задумано - PullRequest
0 голосов
/ 15 апреля 2020

РЕДАКТИРОВАТЬ: я исправил это с помощью кода ниже.

Я пытаюсь сделать простое утверждение, которое видит, если игрок близок к огню. Если он находится рядом с огнем, а ключ не нажат, он получит повреждение, как указано. Это работает отлично. Однако, если клавиша нажата, игрок все равно будет получать урон.

Логический урон определяется над классом как static bool damage = false;

            if (isPlaying)
            {
                player.Stop();
                Game.LocalPlayer.Character.IsFireProof = false;

            }
            else
            {
                player.PlayLooping();
                Game.LocalPlayer.Character.IsFireProof = true;


            }

Что мне делать, чтобы когда игрок находится рядом с местом пожара И кнопка нажата, чтобы не получить урон?

1 Ответ

0 голосов
/ 15 апреля 2020

Здесь не так много для нас go, но я думаю, что вы путаете вашу логику c здесь.

Нажатие клавиши гарантирует, что Game.LocalPlayer.Character.IsFireProof = true она должна использоваться только для сделайте это и, вероятно, за пределами кода, который вы нам предоставили.

Тогда ваш код будет:

if (Vector3.DistanceSquared(Game.LocalPlayer.Character.Position, locationData.GoToPosition) < 10f )
{
    if( Game.LocalPlayer.Character.IsFireProof != true)
    {            
        Game.LocalPlayer.Character.Health -= 1;
    }
}

** edit **

Ладно. В дополнение к вашим комментариям.

Я не уверен, вернет ли Game.IsKeyDown(...) значение true, если клавиша нажата или нет.

Поскольку не очень хорошая практика помещать вызовы функций в операторах logi c, так как их трудно отладить, попробуйте:

if (Vector3.DistanceSquared(Game.LocalPlayer.Character.Position, locationData.GoToPosition) < 10f )

    {
        bool damage != Game.IsKeyDown(Settings.SCBA);

        if( damage == true)

        {            

            Game.LocalPlayer.Character.Health -= 1;

        }

    }

Если нажатие или отпускание клавиши не имеет никакого эффекта, то Game.IsKeyDown не делает то, что вы ожидаете.

...