Как указать нулевое положение акселерометра?

Общие вопросы о Unity3D

Как указать нулевое положение акселерометра?

Сообщение jimmm 24 май 2017, 04:20

Как запоминать стартовое положение дивайса?
То есть указать акселерометру точку ноль от которой нужно отсчитывать повороты и наклоны в разные стороны?
Я сделал так:
Синтаксис:
Используется csharp
float startY;
float tornY;
void Start (){
startY = Input.acceleration.y;
}
void Update (){
tornY = (Input.acceleration.normalized.y - startY);
}


Но у меня проблема если дивайс зафексирован в вертикальном положении, тогда наклоны вверх и вниз неправильно просчитываются. Как исправить, чтоб даже если игрок лежит на спине, дивайс правильно просчитывал наклоны назад и вперед корректно относительно игрока??
Последний раз редактировалось jimmm 24 май 2017, 12:19, всего редактировалось 1 раз.
jimmm
UNIверсал
 
Сообщения: 417
Зарегистрирован: 23 янв 2013, 22:57

Re: Как указать нулевое положение акселерометра?

Сообщение Cr0c 24 май 2017, 11:43

Делать "нулевое положение" - запоминать положение как базовое и от него считать.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Как указать нулевое положение акселерометра?

Сообщение Valentinus 24 май 2017, 12:12

Cr0c писал(а):Делать "нулевое положение" - запоминать положение как базовое и от него считать.

судя по скрипту, он так и пробует делать.
другое мое творчество: samlib.ru/u/us_w/
Аватара пользователя
Valentinus
Старожил
 
Сообщения: 889
Зарегистрирован: 24 мар 2017, 18:33

Re: Как указать нулевое положение акселерометра?

Сообщение jimmm 24 май 2017, 12:16

Valentinus писал(а):
Cr0c писал(а):Делать "нулевое положение" - запоминать положение как базовое и от него считать.

судя по скрипту, он так и пробует делать.

Да только у меня проблема, когда дивайс стоит строго вертикально, например, тогда наклон на себя не работает. Я так понимаю координата по оси Y уходит в минус и расчет наклона становится не правельным. Можно ли как-то избезать этого?
jimmm
UNIверсал
 
Сообщения: 417
Зарегистрирован: 23 янв 2013, 22:57

Re: Как указать нулевое положение акселерометра?

Сообщение Valentinus 24 май 2017, 13:19

я с гироскопом не работал, поэтому спрошу - зачем вы делаете normalized ?
другое мое творчество: samlib.ru/u/us_w/
Аватара пользователя
Valentinus
Старожил
 
Сообщения: 889
Зарегистрирован: 24 мар 2017, 18:33

Re: Как указать нулевое положение акселерометра?

Сообщение Cr0c 24 май 2017, 18:36

Синтаксис:
Используется csharp
Vector3 zero_pos;
void SetZeroPos{
 zero_pos = Input.acceleration;
}
Vector3 GetRelative(){
 return (Input.acceleration - zero_pos).normalized;
}

И уже с него берите данные
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Как указать нулевое положение акселерометра?

Сообщение jimmm 24 май 2017, 23:43

Valentinus писал(а):я с гироскопом не работал, поэтому спрошу - зачем вы делаете normalized ?

Честно говоря не помню
jimmm
UNIверсал
 
Сообщения: 417
Зарегистрирован: 23 янв 2013, 22:57

Re: Как указать нулевое положение акселерометра?

Сообщение jimmm 26 июл 2017, 02:36

Cr0c писал(а):
Синтаксис:
Используется csharp
Vector3 zero_pos;
void SetZeroPos{
 zero_pos = Input.acceleration;
}
Vector3 GetRelative(){
 return (Input.acceleration - zero_pos).normalized;
}

И уже с него берите данные

Это не работает,
Так же когда дивайс строго вертикально(то есть перпендикулярно земле) при отклонении назад, работает так же как и наклон вперед. Я так понимаю переходит через 0 сразу в -0, поэтому высчитывание с вычитанием зерПозиции дает неправильный ответ.
Например zero_pos.y =10 и при наклоне назад, через ноль, получается что вычитание идел минусового значения из 10.

Кто знает как этого избежать?
jimmm
UNIверсал
 
Сообщения: 417
Зарегистрирован: 23 янв 2013, 22:57

Re: Как указать нулевое положение акселерометра?

Сообщение jimmm 26 июл 2017, 03:52

Valentinus писал(а):я с гироскопом не работал, поэтому спрошу - зачем вы делаете normalized ?

Вспомнил почему нормалайзед стоит, это нужно чтобы получить минусовые значенияотносительно нулевой точки, так как камера двигается спомощью анимации.
jimmm
UNIверсал
 
Сообщения: 417
Зарегистрирован: 23 янв 2013, 22:57

Re: Как указать нулевое положение акселерометра?

Сообщение snezhok_13 26 июл 2017, 09:51

У меня была проблема с акселерометром, когда я использовал моментальные значения из acceleration. Вам нужно использовать не моментальные значения, а накопительное значение с кватернионом из Input.gyro (поищите в документации именно кватернион)
Разработка игр, немножко игровая журналистика, сейчас делаем Календарь: даты выхода игр
Аватара пользователя
snezhok_13
UNIверсал
 
Сообщения: 450
Зарегистрирован: 09 сен 2013, 11:12
Skype: s.coremission
  • Сайт


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4