Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 15.01.2018
Сообщений: 45
1

Движение акселерометра в прыжке

06.02.2018, 09:39. Просмотров 888. Ответов 20
Метки нет (Все метки)

Доброго времени суток, форумчане. Прошу помощи в таком вопросе:
Есть скрипт с движением акселерометром по оси х:
C#
1
2
3
4
5
6
7
8
9
10
11
void FixedUpdate() {
        if(isGrounded == true){
            Accelerometr();
        }
    }
public void Accelerometr(){
        dir.x = Input.acceleration.x;
        if (dir.sqrMagnitude > 1) dir.Normalize();
            dir *= Time.deltaTime;
            transform.Translate (dir * speed);
        }
В Update идёт проверка на нахождение на поверхности, которая не даёт прыгать больше одного раза. В общем, необходимо чтобы при прыжке он сохранял направление от датчика акселерометра (если игрок двигался вправо и при этом прыгнул, то перс полетит вправо и только вправо с той скоростью, что задал датчик акселерометра).
Заранее спасибо

Добавлено через 20 часов 41 минуту
Пардон, забыл скрипт прыжка он перед Update()
C#
1
2
3
4
5
6
7
8
9
void IBeginDragHandler.OnBeginDrag(PointerEventData eventData) {
if(isGrounded == true){
            if(eventData.delta.y > 0){
                rb.AddForce(Vector3.up * speedJ, ForceMode.Impulse);
                Debug.Log("Up");
                anim.Play("Jumping"); 
            }
            else Debug.Log("Down");
                }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.02.2018, 09:39
Ответы с готовыми решениями:

Отключение коллайдеров при прыжке
Здравствуйте! Нужна ваша помощь. Работаю над 2D игрой где персонаж летит вверх когда оттягиваешь...

Движение персонажа в прыжке
Я смог сделать прыжок на месте вверх вниз (только y), но мне нужно чтобы когда объект в воздухе при...

Запретить Double Jump при прыжке дракона
Добрый день знатоки , в этом туре вопрос от уважаемого автора. _____ if(Key==VK_SPACE) { ...

Калибровка акселерометра
Начал серфить геймдев под мобилочки, да столкнулся с одной проблемой - параметр Input.acceleration...

20
158 / 157 / 59
Регистрация: 19.02.2015
Сообщений: 821
06.02.2018, 13:20 2
Одновременно с импульсом вверх нужно придать еще и импульс в сторону движения.
0
0 / 0 / 0
Регистрация: 15.01.2018
Сообщений: 45
06.02.2018, 15:09  [ТС] 3
Serj190492,
C#
1
rb.AddForce(Vector3.up * speedJ, ForceMode.Impulse);
я так понимаю, что можно в эту строчку вместо Vector3 задать напрямую координаты которые будут задавать движение, но как впихнуть ещё один импульс? Это еще один нужен AddForce?
0
158 / 157 / 59
Регистрация: 19.02.2015
Сообщений: 821
06.02.2018, 15:27 4
Цитата Сообщение от Basillis201 Посмотреть сообщение
Это еще один нужен AddForce?
Верно.
C#
1
rb.AddForce(Vector3.forvard * )
0
733 / 581 / 203
Регистрация: 06.08.2015
Сообщений: 2,426
06.02.2018, 19:34 5
Serj190492, а почему нельзя в одном AddForce тупо сложить два вектора силы? Зачем два раза силу добавлять?
0
158 / 157 / 59
Регистрация: 19.02.2015
Сообщений: 821
06.02.2018, 19:36 6
Cr0c, честно говоря просто не знал)
Т.е. просто AddForce(Vector3 + Vector3)?
0
733 / 581 / 203
Регистрация: 06.08.2015
Сообщений: 2,426
06.02.2018, 20:25 7
Serj190492, ну да, результирующая сила - сумма всех сил. Школьный курс, блин.
0
Serj190492
06.02.2018, 20:31
  #8

Не по теме:

Cr0c, у меня с векторами так себе :-[ Спасибо, буду знать.

0
0 / 0 / 0
Регистрация: 15.01.2018
Сообщений: 45
07.02.2018, 10:09  [ТС] 9
C#
1
rb.AddForce((Vector3.up + dir.normalized) * speedJ, ForceMode.Impulse);
при таком сложении получилось ровно то что я хотел. Игрок прыгает в сторону движения от акселерометра и только в ту сторону. вектор dir взят из Accelerometr() (я так полагаю). Спасибо за подсказку с сложением векторов.
0
0 / 0 / 0
Регистрация: 15.01.2018
Сообщений: 45
08.02.2018, 14:12  [ТС] 10
выходит с этой строчкой следующее: сначала перс прыгает как и нужно (с сохранением движения от акселерометра). Но после прохождения 1 префаба - прыгает также без сохранения, 2-3 префаба - происходит что-то типо инверсии: при движении вправо - прыгает влево и наоборот. Какие это можно пофиксить?
0
14 / 14 / 2
Регистрация: 07.11.2015
Сообщений: 237
08.02.2018, 22:44 11
С каких пор Input в FixedUpdate читается?
0
0 / 0 / 0
Регистрация: 15.01.2018
Сообщений: 45
09.02.2018, 08:38  [ТС] 12
JerryLetehen, акслерометр я тупо содрал с оф сайта документации по unity. Просто вставил это в отлельный метод и этот метод вызываю в update.
0
733 / 581 / 203
Регистрация: 06.08.2015
Сообщений: 2,426
09.02.2018, 08:50 13
JerryLetehen, а в чём проблема считать в фикседе? Не мышка же, да и данные мгновенные, а не кумулятивные. Ну подумаешь 50 фпс - значит этого хватает.
0
0 / 0 / 0
Регистрация: 15.01.2018
Сообщений: 45
09.02.2018, 09:00  [ТС] 14
Cr0c, ну на мобилке игра значительно тормозит. В этом и может быть причина?
0
14 / 14 / 2
Регистрация: 07.11.2015
Сообщений: 237
09.02.2018, 14:07 15
Cr0c, В юнити Инпут происходит перед Апдейтом. А Фиксед Апдэйт может провернуться несколько раз до Инпута. Из этого получаем, что не в каждом ФикседАпдэйте будет действительное значение Инпута.
Банальный пример, считайте нажатие кнопки в ФикседАпдэйте (в VR GetHairTriggerDown например) и в каких-то моментах будете получать неверное значение. Крч ЛУУчше считать в Апдэйт, так как именно это метод будет содержать действительное значение Инпут.
0
733 / 581 / 203
Регистрация: 06.08.2015
Сообщений: 2,426
09.02.2018, 18:34 16
JerryLetehen, то есть акслерометр может между апдейтом и физикой сильно изменится (менее, чем за 0.02 сек)?
0
14 / 14 / 2
Регистрация: 07.11.2015
Сообщений: 237
09.02.2018, 19:00 17
Cr0c, я понимаю о чём вы говорите. Как я и сказал 100% десттительная инфа об Инпуте будет гарантировано только в Апдэйте. Конечно, в каких-то случаях это может быть и не важно.
Приведу конкретный пример. У меня на ВР проекте нужно было двигать(кутить вокруг руки) контроллер и мерять его скорость если нажат триггер. В итоге я сначала в фиксаж апдэйте решил эту проверку делать и выводил себе в шлем иные о том, какого сейчас состояния триггер: нажат или нет. В итоге я жму на триггер и кручу рукой, и вижу на экране просадки тру на фолс. И каждую секунду-две у меня вот этот бал происходил. Подошли умные ребята, спросили у меня жизненный цикл Юнити потом спросили вот этот интервал инпута. И, собственно, очень быстро мы пришли к закоючению: инпут в апдэйте, если очень важно считать его каждый раз.
0
733 / 581 / 203
Регистрация: 06.08.2015
Сообщений: 2,426
09.02.2018, 19:27 18
JerryLetehen, в vr данные ввода куда более критичны, чем здесь акселерометр ))
0
14 / 14 / 2
Регистрация: 07.11.2015
Сообщений: 237
09.02.2018, 19:34 19
Cr0c, согласен.
0
0 / 0 / 0
Регистрация: 15.01.2018
Сообщений: 45
12.02.2018, 13:41  [ТС] 20
JerryLetehen, в общем воткнул в update акселерометр так всё равно происходит инверсия после прохода по нескольким префабам.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.02.2018, 13:41

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Чувствительность акселерометра
Всем доброго дня, возможно кто то сталкивался с такой проблемой как чувствительность акселерометра?...

Подскажите по потреблению акселерометра
Добрый день! Заранее прошу прощения - сам в электронике слабо разбираюсь, но очень нужно...

Пайка акселерометра 3мм.
День добрый! Наконец таки мне попал в руки акселерометр для моих дипломных задумок... Купил...

Параметр "ускорение" акселерометра
Ищу акселерометр для проекта, но не знаю с каким максимумом ускорения выбрать. В параметре...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.