Ошибка в коде, игра на android

201
10 апреля 2019, 15:10

Пишу игру на unity используя c# под android. Суть кода такова: Объект вращается с постоянной скоростью, но если сделать удерживающее касание (скрипт работает только тогда, когда палец касается экрана), вращение объекта должно замедлиться, но вместо этого он просто перестает вращаться... вот код:

public class TouchRotate : MonoBehaviour {
public float velocity=180;
public float slow_velocity=90;
// Update is called once per frame
void Update () {
    if (Input.touchCount > 0)
    {
        Touch touch = Input.GetTouch(0);
        if (touch.phase == TouchPhase.Began)
        {
            // замедление вращения при длительном касании экрана
            transform.Rotate(new Vector3(0, 0, slow_velocity * Time.deltaTime));
        }
    }
    else
    {
        transform.Rotate(new Vector3(0, 0, velocity * Time.deltaTime));
    }
}
}
Answer 1

У вас в коде есть такая ветка в условиях, в которой ничего не выполняется. А конкретно - если Input.touchCount > 0, но touch.phase != TouchPhase.Began.

Если вы хотите сделать то, что задумали, то вам необходимо хранить какой-то флаг. При touch.phase == TouchPhase.Began выставляете его в true, при touch.phase == TouchPhase.Ended в false. А в вашем условии проверяете именно этот флаг.

Потому что оба ивента срабатывают лишь единожды, а проверку вы делаете в каждом кадре.

Кстати, вместо флага можно просто проверять на то, что состояние либо Stationary, либо Moved. Но это уж как вам больше нравится. Справка тут

READ ALSO
возврат Marshal LPArray из unmanaged dll

возврат Marshal LPArray из unmanaged dll

Как грамотно вернуть массив структур из C unmanaged кода воспользовавшись опцией LPArray? На текущий момент маршалю все в ручную, возвращая IntPtr, но хотелось...

188
Начальное значение Random() в C#

Начальное значение Random() в C#

Подскажите, пожалуйста, на что указывает и влияет начальное значение в объявлении нового объекта RandomДопустим 999, в нашем случае

162
Как показать реальное время, если оно неправильное на компьютере?

Как показать реальное время, если оно неправильное на компьютере?

возник такой вопрос : А что если допустим на компе у владельца неправильное время, тогда получается нужно его откуда-то выудить, может аля...

202
Как перезапустить форму Windows form?

Как перезапустить форму Windows form?

Всем приветВопрос следующий: у меня есть форма и мне надо ,чтоб пользователь по нажатию на кнопку "Reset" обнулял форму(возвращал ее в исходное...

239