カロリーメイトください

Barbaroi Ware(バルバロイ・ウェア)という名前でアプリ開発してます

『Unityの寺子屋 定番スマホゲーム開発入門』「Chapter01 Unityの基本を身につけよう」+ 秋葉原Weeyble勉強会 学習記録1

Unityの寺子屋 定番スマホゲーム開発入門

Unityの寺子屋 定番スマホゲーム開発入門

序文

まだ前の本も終わってないのに新作です。笑

昨日コワーキングスペース秋葉原Weeybleで行われたUnityの勉強会に参加させていただきまして。

weeyble-game.connpass.com weeyble.com

いたのくまんぼう氏、大槻有一郎氏共著のおなじみのUnity本『Unityの寺子屋 定番スマホゲーム開発入門』を順番に読み進めていこうという勉強会なんですが。
(ところで、いたの・くまんぼう氏だったんですね…いたのく・まんぼう氏…下手すればいのたく・まんぼう氏かと…)

Unityの寺子屋 定番スマホゲーム開発入門

Unityの寺子屋 定番スマホゲーム開発入門

いつものように学習内容をまとめていくとともに、勉強会にはあまりプログラミング経験のない方も参加されている感じだったので、多少でもスクリプトの理解の参考にしていただければ…という感じでまとめていきたいと思います。

進捗

  • Chapter01 Unityの基本を身につけよう
    • 1-1 Unityをインストールする
    • 1-2 ゲームオブジェクトに触れてみよう
    • 1-3 スクリプトでゲームオブジェクトを制御する

コード実装部分

\Assets\Test.cs

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

public class Test : MonoBehaviour {

    // 大きな流れとしては
    // Start()メソッドの中で
    // オブジェクト(お坊さんの画像)の位置情報を読み取り、
    // Update()メソッドの中で
    // オブジェクト(お坊さんの画像)の位置情報を新たに書き込んでいます。
    // 結果的にお坊さんの絵が瞬間的に動き回っているように見えています。

    // オブジェクトの位置情報を読み取ったり、書き込んだりするためには、
    // Transformというコンポーネントを取得してやる必要があり、
    // Start()メソッドでは
    // ①Transformコンポーネントの取得 
    //     → ②オブジェクトの位置情報の読み取り(と保存)
    // Update()メソッドでは
    // ①Transfromコンポーネントの取得 
    //     → ②オブジェクトの位置情報の書き込み
    // という処理が行われています。

    // この①○○コンポーネントの取得 
    //           → ②オブジェクトの情報の読み取り or 書き込み
    // という流れを意識しておくと
    // プログラムが理解しやすくなるかもしれません。


    // オブジェクトの初期位置を保存しておく変数
    Vector3 startpos;

    // オブジェクトが生成されたときに一度だけ実行される処理(メソッド)
    void Start () {
        // ①Transformコンポーネントの取得
        Transform tr = GetComponent<Transform>();
        // ②オブジェクトの位置情報の読み取ってstartpos変数に保存する
        startpos = tr.position;

        // この処理を一行で書くと
        // 書籍に掲載されている以下のコードになります。やっていることは全く同じです。
        // startpos = GetComponent<Transform>().position;
    }


    // 画面が更新されるたびに呼び出される処理(メソッド)
    // 1秒間に50-60回程度呼び出されます
    // 説明の都合上、一部コードの順番を入れ替えていますが、やっていることは同じです
    void Update () {
        // オブジェクトを次に動かす位置を決める
        // (最初のオブジェクト位置を基準に縦横±2の範囲でランダムに移動させる)
        Vector3 pos = new Vector3(
            startpos.x + Random.Range(-2.0f, 2.0f),
            startpos.y + Random.Range(-2.0f, 2.0f)
        );

        // ①Transformコンポーネントの取得
        Transform tr = GetComponent<Transform>();
        // ②オブジェクトの位置情報を新たに書き込んで、オブジェクトを動かす
        tr.position = pos;
    }
}

実行結果

www.youtube.com

感想

なるべく、初めてUnityを触るという方にも理解しやすくコメントを付けてみたつもりですが、いかがでしょうか。(-- ;;)

つか、難しいですよねぇ。
コード内にも書いてますが

startpos = GetComponent<Transform>().position;

Transform tr = GetComponent<Transform>();
startpos = tr.position;

と書くべきだと思いますし、Start()メソッドとUpdate()メソッドで書き方が一貫してないのも気になります。

最初のコードでRandom.Range()メソッドとか入れる必要はあったのか?とか、うーん。(-- ;;)
やっぱり「2冊目」なのかもしれませんね、これ。

とりあえず、①○○コンポーネントの取得 → ②オブジェクトの読み取り or 書き込みという流れを意識しておくと多少見通しがよくなるかもしれません。
まだ先は読んでないですけど。

もし意味わからんってところがあれば、なるべくフォローするつもりですので、お気軽にコメントください。

カロリーメイトください。

BGM

SCK/D/DD / ロクトシチ

www.youtube.com

先日のつしまみれさんのライブでデモCDをいただきました。
ありがとうございました。