Unity를 사용하여 Android에서 가속도를 처리하는 데 발생하는 어려움
이것은 Unity가 가속도를 처리할 때 넘어지는 문제다.
Unity가 지정한 초의 가속도 데이터를 가져올 수 없습니까?
원래 Unity는 게임 개발용 IDE이기 때문에 일정량의 데이터를 어떻게 처리해야 할지 구상하지 못했을 수도 있다.
이번에 나는 게임에서 보행 검사를 해야 하기 때문에 반드시 일정량의 가속도 데이터를 얻어야 한다.
(가속도 보행 검출 알고리즘을 사용하면 조만간 쓸 수 있을 것 같다.)
우선 일반적인 Unity를 통해 가속도를 얻는 프로그램은 다음과 같다.
sample1.csfloat acc_x = Input.acceleration.x; //X軸の加速度
float acc_y = Input.acceleration.y; //Y軸の加速度
float acc_z = Input.acceleration.z; //Z軸の加速度
이렇게 하면 단말기의 센서에서 가속도를 얻을 수 있다.
하지만 문제는 여기에 있다.
이것은 이 코드를 호출할 때 센서의 가속도를 얻는 것이다.
즉 실시간 수치를 거둔 것이다.
가속도로 보행 측정을 할 때는 몇 초의 가속도 데이터로 판정해야 하기 때문에 실시간 값만 얻을 수 없다.
그러나 Unity에는 몇 초의 가속도 데이터를 가진 라이브러리가 존재하지 않는다.
지정한 초의 가속도 획득
이번에는 10초의 가속도 데이터를 추출하는 프로그램을 구상했다.
sample2.csVector3[] acc; //3軸の加速度を格納する
int index; //配列のインデックス
Start () {
acc = new Vector3[600]; //配列を初期化
index = 0;
}
Update () {
//配列へ加速度データを格納
foreach (AccelerationEvent ae in Input.accelerationEvents) {
acc [index] = ae.acceleration;
index++;
}
//配列が埋まったら実行する
if (index == 600) {
/* ~~処理~~ */
index = 0; //インデックスをリセット
}
}
Input.accelerationEvents 속성을 사용하여 가속도를 얻으면 fps에 의존하지 않고 가속도 센서에서 주기적인 값을 얻을 수 있다.
Android와 iOS의 경우 가속도 센서의 주파수가 60Hz로 설정되므로 어레이의 크기가 60Hz로 설정됩니다.×필요한 초의 수를 설정하면 지정한 초의 가속도를 얻을 수 있다.
가속도 센서의 주파수를 변경할 수 있습니까?
이번에는 보행 측정을 위해 가속도를 얻었는데, 보행 측정만 한다면 가속도 센서의 주파수는 20Hz면 충분하다.
계산량을 줄이면 처리도 가벼워지기 때문에 가속도 센서의 주파수를 바꾸는 방법을 찾았다.
가속도 센서의 주파수는 Player Settion의 Other Setting의 Configuration의 Accerrometer Frequency에서 변경할 수 있습니다.
하지만 iOS라면 이 프로젝트가 있고, 안드로이드는 같은 곳에 있지 않다.
iOS용 PlayerSetting
Android의 PlayerSetting
안드로이드만 다른 곳으로 변경됐다고 볼 수 없기 때문에 안드로이드의 경우 가속도 센서의 주파수를 변경할 수 없다.
Reference
이 문제에 관하여(Unity를 사용하여 Android에서 가속도를 처리하는 데 발생하는 어려움), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sbgMahiro/items/bc857cbc0658587ae64a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
float acc_x = Input.acceleration.x; //X軸の加速度
float acc_y = Input.acceleration.y; //Y軸の加速度
float acc_z = Input.acceleration.z; //Z軸の加速度
이번에는 10초의 가속도 데이터를 추출하는 프로그램을 구상했다.
sample2.cs
Vector3[] acc; //3軸の加速度を格納する
int index; //配列のインデックス
Start () {
acc = new Vector3[600]; //配列を初期化
index = 0;
}
Update () {
//配列へ加速度データを格納
foreach (AccelerationEvent ae in Input.accelerationEvents) {
acc [index] = ae.acceleration;
index++;
}
//配列が埋まったら実行する
if (index == 600) {
/* ~~処理~~ */
index = 0; //インデックスをリセット
}
}
Input.accelerationEvents 속성을 사용하여 가속도를 얻으면 fps에 의존하지 않고 가속도 센서에서 주기적인 값을 얻을 수 있다.Android와 iOS의 경우 가속도 센서의 주파수가 60Hz로 설정되므로 어레이의 크기가 60Hz로 설정됩니다.×필요한 초의 수를 설정하면 지정한 초의 가속도를 얻을 수 있다.
가속도 센서의 주파수를 변경할 수 있습니까?
이번에는 보행 측정을 위해 가속도를 얻었는데, 보행 측정만 한다면 가속도 센서의 주파수는 20Hz면 충분하다.
계산량을 줄이면 처리도 가벼워지기 때문에 가속도 센서의 주파수를 바꾸는 방법을 찾았다.
가속도 센서의 주파수는 Player Settion의 Other Setting의 Configuration의 Accerrometer Frequency에서 변경할 수 있습니다.
하지만 iOS라면 이 프로젝트가 있고, 안드로이드는 같은 곳에 있지 않다.
iOS용 PlayerSetting
Android의 PlayerSetting
안드로이드만 다른 곳으로 변경됐다고 볼 수 없기 때문에 안드로이드의 경우 가속도 센서의 주파수를 변경할 수 없다.
Reference
이 문제에 관하여(Unity를 사용하여 Android에서 가속도를 처리하는 데 발생하는 어려움), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sbgMahiro/items/bc857cbc0658587ae64a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Unity를 사용하여 Android에서 가속도를 처리하는 데 발생하는 어려움), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sbgMahiro/items/bc857cbc0658587ae64a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)