【Unity】Android端末のジャイロセンサーを使ってボールを転がすメモ
やりたいこと
とりあえず実装
参考
- 傾きで玉を転がすゲームなどの場合(モバイル端末を地面に水平に構えた場合) unity_script_gyro_mobile - FreeStyleWiki
できた。
さらにやりたいこと
- directional lightも傾きに合わせて動かしたい
とりあえず実装
ライトに直接スクリプトを貼って簡単じゃーん(?)
・・・何か違う
yとzを入れ替える
できた。ソースは後述。
もうひとつやりたいこと
- このままだと直射日光は垂直にしか当たらないので、適当に傾けたい
シーンで設定しているライトの向きをオフセットとして使う
- transform.rotation の値の型は Quaternion
- Quaternion同士を掛け算すると向きを合成できる
というわけで、以下のコードに。
public Quaternion direction_light_offset; public Quaternion gyro_to_light; void Start () { // 太陽光の傾きオフセットをシーンの設定から保持 direction_light_offset = this.transform.rotation; } void Update () { // 端末の傾きを保持 gyro_to_light = Input.gyro.attitude; // yz軸の値を入れ替え float yz_change; yz_change = gyro_to_light.y; gyro_to_light.y = gyro_to_light.z; gyro_to_light.z = yz_change; // ライトの向きを端末の傾き+元の設定のオフセットで変更 this.transform.rotation = gyro_to_light * direction_light_offset; }
できた。
Quaternionについての参考はこちら