X

【Unityチュートリアル】玉転がし-Roll A Ball- その1


三星です。
Unityチュートリアルの一つである玉転がしをやってみました。(参考:初めてのUnity

どのようなゲームかというと玉を転がしてアイテムをゲットしてステージをクリアするアクションゲーム
これだけでもちょっとしたミニゲームとして市販のゲームにあってもいいですね!

そしてこのチュートリアルだけでUnityにて簡単なアクションゲームの骨格を作るだけの最低限の知識を得ることが出来ます!

Unityを始めようか、始めるとしたら何をすればいいか迷っている方の参考になれば幸いです。

このチュートリアルで出来るようになること

プレイヤーを動かして、アイテムをゲットして、ゲームをクリアする!
この一連を学べます。

さらにさらに自分自身でコードを書いてスクリプトを追加する作業も体験できますので、敷居の高そうなコーディングも楽々です。
有料の本ももちろん良いですが、こちらのチュートリアルでUnityを体験してはどうでしょうか。なんと言っても無料ですから。

実際にやりたくなった方はこちらからどうぞ!

また、更に初歩的に「Unityって何?何が出来るの?」って方はこちらの記事をどうぞ。

プロジェクトの作成

new project を作成、シーンをセーブします。

さらに画面にある様々なウィンドウの名前が分かります。

本当に初めて起動する人のためのページですね。
それぞれのビューの役割を改めてお勉強しました。

ステージを作成

ヒエラルキービューからプレーン及びキューブを生成し、それを地面と壁にします。
これはよく使う手法ですね。

マテリアルを使って地面と壁の色を変えます。
マテリアルで見た目を変えれるんですね。

最終的にこんな感じになります。

これらは動かないものなのでインスペクタービューでスタティックにチェックを入れます。
スタティックにしない場合まかり間違うと動いてしまうバグもあったり見た目もよろしくないです。

オブジェクトの複製、大きさの変更、回転、マテリアルでの色の変更を学びました。

そして最も大事かもしれない、オブジェクトとアセットの整理もここでやります。
ゲームを作るうえでこれは大事な作業ですよね。

まだコンポーネントを使ってないので動く物体はひとつもないです。

プレイヤーの移動

いよいよコンポーネントと自作コードの出番です。

コンポーネントとは

まずはコンポーネントの説明。

コンポーネントとは、GameObjectを構成する部品(コンポーネント)です。 GameObjectはこのコンポーネントの挙動に従い、自身を稼働させたり、他のオブジェクトへ影響をあたえることが出来ます。

コンポーネントの最初はRigidBodyです。
インスペクタービューからくっつけることが出来ます。
RigidBodyは物理演算のコンポーネントです。Unity出来合いのものですがこれが便利。
これからもたくさん使うことになるでしょう。

これを付けることでボールが宙に浮いていた状態から地面に落ちます。

自作スクリプトをくっつける

ボールを転がすゲームなのでボールを操作する必要があります。

転がすゲームを追加するには、入力を受けPlayerオブジェクトを転がす機能が必要です。 この機能はUnityの標準では用意されていないため、自身でコンポーネントを作成する必要があります。
このコンポーネントはC#もしくはUnityScriptで記述する事ができます。

ここで自作コードを作ります。
インスペクター内のAddComponentボタンを押した一番下NewScriptから。

これもとてもとてもよくよく使うボタンなのでもう忘れることはないでしょう。
スクリプトを作っていきます。

スクリプトを作成する言語はJavaScriptとC#がありますがここではC#。
僕も普段からC#を使っています。

画面はこんな感じ。

今回作成するスクリプトは「ボタンを押したら転がる」機能を持っています。 機能として分解すると、以下の通りになりそうです。

  • 毎フレーム入力を受け付ける
    物理演算前で動く前に、入力内容を元にプレイヤーのrigidbody(剛体)に力を加える
  • 上の二つをコードで実装していきます。

    プログラミングの勉強でよくあることですが、最初のうちは”こうやれば動く”というものをとりあえず覚えていきましょう。
    Unity内のライブラリや実装がどうなっているか気になるかと思いますがそれはある程度自由にUnityを動かせるようになってからにしましょう。
    じゃないといつまでたってもゲームが作れませんからね。

    さて、さっそく出てきました。

    Unityのスクリプトは、特定のメソッドを定義すると自動的にメソッドを特定のタイミングで呼び出します。
    例えば、クラス内に「void Update(){}」と記述すると、{から}内に記述した処理を毎フレーム更新時に呼び出しますし、「void FixedUpdate(){}」と記述すると物理演算でキャラクターが動く度に呼ばれる処理を設定する事ができます。

    これはライブラリ関数でしょう。
    しかしここではこの関数の詳細は調べません。
    ”毎フレーム更新したい場合はvoid Update()でくくってプログラムを組む”ということを覚えましょう。

    同様に”Input.GetAxis()でキーボード入力の内容が入る”と覚えちゃいましょう。

    必要なAPIを探す

    APIとはApplication Programming Interfaceの略です。
    インターフェイス、つまり相互の橋渡し役です。
    では、何と何の橋渡しなのかというとアプリケーションとプログラミング。
    APIとはアプリケーション作成のためのプログラミングを効率よくするためのインターフェイスなのです。

    実はAPIに存在する関数を自作することが出来ます。
    ただ、それって非効率ですよね。
    だからAPIは多くの場所で使われているのです。

    ここでは実際にAPI検索のやり方もレクチャーされます。

    ここで rigidbody.AddForceというAPIを発見します。
    これはRigidBodyに力を加えるAPIなのでボールを動かすことに使えそうです。
    ありがたく使わしてもらいましょう。

    数値の調整

    ボールを動かすとして、そのスピードを調整する必要があります。
    ただ、それをスクリプト上でやるのはめんどくさいのでインスペクタービューで出来たら嬉しいですよね。
    それを可能にするのがPublicです。

    public float speed = 10;

    ここではspeedが変数です。
    publicにするとUnityではインスペクタービューで変更可能になります。
    また別のスクリプトから値を変更することも可能になります。

    これでInspectorビューにspeed設定項目が追加され、Inspectorビューから調整しながらゲームを作成することが出来るようになりました。

    文字数も相当なものになってきたのでこの辺で。
    続きはまた後日!

    カメラを動かす

    アイテム回収の追加

    ゲームのUIを追加する

    ゲームのクリアを追加する

    障害物とリスタート

    Categories: Unity
    M1star.paper :