読者です 読者をやめる 読者になる 読者になる

スマゲ

スマートなゲームづくりを目指して日々精進

Unityで端末の加速度センサを利用する

Unityで端末の加速度センサを利用してみます。取得するのは端末の傾きです。

■対象
iOS, Android端末

■設定
利用OSのPlayer Settings を開いてConfigurationからAccelerometer Frequencyから取得する加速度のサンプリング回数を設定する
何かしら数値が入っていれば問題ない
f:id:sanukin39:20160622233124p:plain

■加速度センサの値取得
Input.accelerationから取得できる

void Update(){

 // 加速度センサの値を取得
    Vector3 val = Input.acceleration;

    // サンプリング値を利用した処理を記述
}

■加速度センサを利用してCubeを移動させるサンプル

20160623002111

Cubeを作成して、以下のスクリプトをアタッチする

using UnityEngine;
using System.Collections;

public class Player : MonoBehaviour {

    float speed = 5.0f;

    void Update(){
        var dir = Vector3.zero;
        dir.x = Input.acceleration.x;
        dir.y = Input.acceleration.y;

        if(dir.sqrMagnitude > 1){
            dir.Normalize();
        }

        dir *= Time.deltaTime;

        transform.Translate(dir * speed);
    }
}

■まとめ
ほぼコードを書くことなく加速度を取ることができた。
Unityはデフォルトで加速度を取得する設定になっており、逆に加速度センサを利用しないアプリに関しては全く無駄な設定なので[Disabled]にしたほうが良い

■参考
docs.unity3d.com