あたも技術ブログ

セットジャパンコーポレーションの社員が運営しています。

【超初心者向け】デザイナーがUnityさわってみた#5



こんにちは。魚の食べ方が綺麗な なのはです。

前回はステージにボールを落としました


atamo-dev.hatenablog.com

↑前回の記事はコチラ


atamo-dev.hatenablog.com

↑最初から見たい人はコチラ

今回もPCは Windows10でお送りしますー!

第5回は少々難易度が上がります。

そう、今回は、プログラムを書いてボールを動かします!!


プログラム?

な英語がずらっと並んだ文字の羅列です。

「何これ英語だし、翻訳しても意味わからないし……」


しかし!

試してみなきゃ分からないし、読んでみなきゃ先のことは分かりません。

レッツトライ!!



スマホを傾けると傾けた方向にボールが転がるようにします。

ジャイロ操作というやつですね。

スマホを右に傾けるとボールが右にコロコロ転がっていくイメージです。

デバッグ(テスト)をするのでAndroidの準備をしておいてください


ビルド番号とか聞いたことないよ!という人は必ず引っ掛かりますよ! リンクはコチラ↓

atamo-dev.hatenablog.com


プログラムを書くとは言え、いきなり書くのは無理なので、コピー&ペーストします。

「ボールをスマホのジャイロ操作で動かせるプログラム」を作っておきました。

※使うエディタは何でもいいです(今回はUnityをダウンロードした時に一緒にダウンロードされるMonoDevelopを使用します)。



エディタを変えたい場合は上のバー(ステータスバー)で「Edit→Preferences」を選んで出てきたウィンドウの項目「External Tools」を選択します。

そのあと「External Script Editor」「Device」の項目をクリックして変えます。

(MonoDevelopを使いたい時は、その項目をMonoDevelopを選べば変える事が出来ます)


まずはプログラムを書くファイルを作っていきます。

ファイルの名前は「Ball」と付けてください。


f:id:atamo_dev:20171025115437p:plain f:id:atamo_dev:20171025115430p:plain f:id:atamo_dev:20171025120024p:plain

ファイルが出来たらダブルクリックして開いて、中身を見てみましょう。

f:id:atamo_dev:20171026112045p:plain こんな感じ。


既に何かいろいろ書かれてますね。

Unityさんがすごく親切に最初の設定をしてくれているだけです、わあ便利。

では作ったファイルにいろいろ追加していきます。


ものすごく簡単に。

void Update () {}の中に下の内容を追加をします。

    //Vector3←用意されているセットみたいなもの
    //方向や座標を読み取る、Vector3は3d座標用
    //zeroは(0,0,0)の意味。左からx,y,z
    var Sphere = Vector3.zero;

    //端末の傾きを読み取る、XはそのままでYのみUnity側でZに変換した値を読み取る
    //傾きを持つ
    Sphere.x = Input.acceleration.x;
    Sphere.z = Input.acceleration.y;

    //フレームではなく、秒で進む単位を指定
    //端末のフレームの読み込む速度に依存しないようにする
    //端末の読み込みはフレームがデフォルト設定
    Sphere *= Time.deltaTime;

    //dir×数字で動かす
    transform.Translate (Sphere * 20f);
    


上の内容を追加したプログラム全体はこんな感じになります↓

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

public class Ball : MonoBehaviour {
    void Start () {
    }
        
    void Update () {
        //Vector3←用意されているセットみたいなもの
        //方向や座標を読み取る、Vector3は3d座標用
        //zeroは(0,0,0)の意味。左からx,y,z
        var Sphere = Vector3.zero;

        //端末の傾きを読み取る、XはそのままでYのみUnity側でZに変換した値を読み取る
        //傾きを持つ
        Sphere.x = Input.acceleration.x;
        Sphere.z = Input.acceleration.y;

        //フレームではなく、秒で進む単位を指定
        //端末のフレームの読み込む速度に依存しないようにする
        //端末の読み込みはフレームがデフォルト設定
        Sphere *= Time.deltaTime;

        //dir×数字で動かす
        transform.Translate (Sphere * 20f);
    
    }

}

完成したら、今度はこのプログラムをボールに実装しましょう。

「Sphere(ボール)」を選択します。

f:id:atamo_dev:20171025130938p:plain

ファイルをInspectorにドラッグして追加します。

クリックしたままじゃないとInspectorの画面が切り替わって追加できなくなってしまいます。

 InspectorでなくてもHierarchyのSphere(ボール)にドラッグしても出来ます。

f:id:atamo_dev:20171025130928p:plain

f:id:atamo_dev:20171025130919p:plain

追加されたら「Ball.cs」という項目が増えているはずです。

f:id:atamo_dev:20171025130912p:plain これでようやく転がるようになりました。


実行ボタンを押してスマホで見てみます。


……なんだかスマホに表示されているのが横に長いという人いますよね。

画面の大きさを変えます。

スマホの機種によって違うのでお好みで変えてみてください。

f:id:atamo_dev:20171025130904p:plain

f:id:atamo_dev:20171025131040p:plain

メニューの下にある+ボタンで任意のサイズを作ることもできますよ。

では、今度こそ実行ボタンを押してスマホを傾けてみてください。

ボールが転がりますね。

転がって落下しますね。

f:id:atamo_dev:20171025131034p:plain

……戻っては来ません!永遠と落ち続けます!

次回は落ちたボールが戻ってくるようにしたいと思います。


おまけ。

csファイル(さっき作ったプログラムのファイル)を作った時に最初から書かれているコードは消しちゃダメです!プログラムを動かすためのおまじないみたいなものだと教わりました。


今回は、void Update () {}の{}の中にボールにどんな風に動いてほしいか書きましたが{}の中に処理を書いていくのがプログラムの基本みたいですよ!

ちなみにvoid Update () {}に書かれたことは繰り返し行われることで、void Start () {}に書かれたことは最初の一回しか行われないみたいです。


いや難しい。

でもゲームを作りたいからプログラムをやりますよ!

まだまだ謎は多いですが、コピー&ペーストしたプログラムの中身を、1項目ずつ消したり、数字を変えたりして何が起こるのか・変わるのかを繰り返して、実験していくと良いと思います。