Unityに関連する記事です

 Unity 2019ではStandard Assetsが非推奨になったため、CrossPlatformInputを利用することが出来なくなりました。
代わりに別の方法でAndroid上でのスワイプ操作を実装します。

TouchController.csです。
using UnityEngine;

/// Summary
/// マウスドラッグ(スマホ画面スワイプ)でPlayerを操作するクラス
///
public class TouchController : MonoBehaviour {

    public float speed;   // Playerオブジェクトの移動速度
    Vector3 mousePos;     // 最初にタッチ(左クリック)した地点の情報を入れる

    void Update() {
    // Moveメソッドを常時呼び出す
        Move();
    }

    void Move() {
    // マウス左クリック(画面タッチ)が行われたら
        if (Input.GetMouseButtonDown(0)) {
      // タッチした位置を代入
            mousePos = Input.mousePosition;
        }
        if (Input.GetMouseButton(0)) {
      // ベクトルの引き算を行い、現在のタッチ位置とその1フレーム前のタッチ位置との差分を方向として代入
            Vector3 mouseDiff = Input.mousePosition - mousePos;
      // 次のフレームのタッチ情報を計算できるように現在のタッチ位置を1フレーム前のタッチ位置として代入
      // これにより、方向の取得→更新をタッチしている間繰り返している
            mousePos = Input.mousePosition;

      // 現在のPlayerの位置に対して、タッチ位置の移動方向を使って移動先を算出する
      // 座標は画面のheightで割ることで移動位置を調整
      // タッチ情報にはZ軸の情報がないので、X軸の移動情報をX軸の移動用に使用
            Vector3 newPos = transform.position + new Vector3(0, 0, -mouseDiff.x / Screen.height) * speed;

      // Playerオブジェクトの位置を更新して移動を解決する
            transform.position = newPos;
        }
    }
}

 このスクリプトをPlayerオブジェクトにアタッチしてコンポーネント化します。
移動速度であるSpeedの値をインスペクターで設定します。(5前後でよいと思います。)

 エディターを実行し、ゲーム画面内にてマウス左ドラッグを行いましょう。Playerオブジェクトがドラッグした方向に進めば成功です。

なお今回はブロック崩しのため、位置の調整をz軸で行っていますが、もちろんx軸などにも応用できます。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3Dレールガンシューティング(応用編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます