超初心者のゲーム開発記~Unity~

超初心者がUnityでゲーム(目標はAndroidアプリ )を開発していくブログです!

【Unityゲーム】スワイプの速度を測るゲームを作る part.1

こんにちは!ヤギです!

今回は、スワイプの速度を測るゲームを作っていきます!
何回かの連載型として、最終的には、Google Playにリリースするところまで書きたいと思います!

作るゲームの概要

  • スワイプ速度を測ることが出来る!
  • Androidで動く!
  • タイトル画面からゲーム画面に遷移する!

それでは作っていきます!

※今回の記事は、スワイプの速度を測るところまでとなります。

1. Unityを起動し、新規プロジェクトを作成する。

2. Build SettingからAndroidにSwitch Platformする。

3. hierarchy > create > UI > Text をクリックする。
f:id:yagigame:20181023201817p:plain
※スワイプの速度を表示するためのTextを用意します!
※画面の中央に表示するために、Inspecter > Anchorから真ん中を選択しましょう。
f:id:yagigame:20181023210252p:plain

4. Project > create > c#scriptをクリックする。
※スワイプの速度を計測するためのスクリプトを作成します!
※スクリプト内に説明を記載いたしました!
f:id:yagigame:20181023201942p:plain

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class GameController : MonoBehaviour {

    
    Vector3 startPos; //タップした場所を記録
    Vector3 endPos; //指を離した場所を記録
    float dir = 0; //スワイプした距離を取得
    float time = 0; //スワイプした時間を取得
    float speed = 0;

    GameObject text;

    // Use this for initialization
    void Start () {
        this.text = GameObject.Find("Text");
	}
	
	// Update is called once per frame
	void Update () {

        //タップした場所と時間を取得する
        if(Input.GetMouseButtonDown(0)){
            this.startPos = Input.mousePosition;
            this.time = 0;
        }

        //スワイプ中の時間を取得する
        if(Input.GetMouseButton(0)){
            this.time += Time.deltaTime;
        }

        //指を離した場所を取得する
        if(Input.GetMouseButtonUp(0)){
            this.endPos = Input.mousePosition;

            //スワイプした距離を取得する
            this.dir = Mathf.Abs(Vector3.Distance(this.startPos, this.endPos));

            //速度を計算する
            this.speed = this.dir / this.time;

        }

        //速度を文字列に変換して表示する
        this.text.GetComponent<Text>().text = this.speed.ToString();
	}
}

5. 作成したスクリプトを、Hierarchy viewのTextにドラッグし紐づけます。
f:id:yagigame:20181023205853p:plain

6. シーンの名前をGameSceneとして保存します。
※次回以降、ゲームタイトル用のシーンを作ります。それと区別するためです!
ここまでで、スワイプの速度が表示されるようになりました!

完成!

実行し、スワイプすると画面の中央に速度が表示されると思います!
f:id:yagigame:20181023211051p:plain

補足:スクリプトの内容説明

速度を求めるために、距離と時間が必要になります!
以下の方法で速度を求めています。

  • 距離については、指でタップした場所から、指を離した場所までの距離を取得します。
  • 時間は、タップしたタイミングを0として、スワイプ中の経過時間を取得しています。
  • 距離と時間から速度を求め、文字列に変換し表示しています。

記事を読んで頂きありがとうございました!
次回は、タイトル用のシーンの作成と、タイトルシーンからゲームシーンへの遷移を書きたいと考えています!

これからも、宜しくお願いいたします!