2013年6月19日水曜日

【Unity】タッチ操作でオブジェクトをグリグリ回す

タッチでグリグリしたい。

方法

まずはオブジェクトを準備
  • グリグリする対象となるCube配置
  • Script(TouchController.cs)作成
  • Scriptを適用する空のGameObject(TouchController)作成
構成
スクリプトの中身

using UnityEngine;
using System.Collections;
using System.Linq;

public class TouchController : MonoBehaviour
{

    /// <summary>回転対象</summary>
    public GameObject Cube;
    /// <summary>回転速度</summary>
    public float Speed = 0.01f;

    void Update()
    {
        //タッチ数取得(Linq使えた)
        int touchCount = Input.touches
            .Count(t => t.phase != TouchPhase.Ended && t.phase != TouchPhase.Canceled);

        if (touchCount == 1)
        {
            Touch t = Input.touches.First();
            switch (t.phase)
            {
                case TouchPhase.Moved:

                    //移動量に応じて角度計算
                    float xAngle = t.deltaPosition.y * Speed * 10;
                    float yAngle = -t.deltaPosition.x * Speed * 10;
                    float zAngle = 0;

                    //回転
                    Cube.transform.Rotate(xAngle, yAngle, zAngle, Space.World);

                    break;
            }

        }
    }
}
簡単なスクリプト説明
  • タッチされた内容はInput.touchesに入る(マルチタッチ対応)
  • EndedとCanceledを除いたタッチ数を取得(めんどうなのでLinq使いました)
  • シングルタッチの場合、移動量計算して回転
実行する前に忘れず
  • TouchControllerオブジェクトへスクリプト適用
  • TouchControllerコンポーネントに回転対象Cube適用
いつも忘れる

実行

グリグリできた

簡単だなー。Unityすごい。

おわり。

タッチについて詳細は↓


Unity系記事まとめ

スポンサーリンク

Related Posts Plugin for WordPress, Blogger...