コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity 入門】【チュートリアル】玉転がしゲームを作る 5. 収集アイテムの配置

目次

前回のチュートリアル

はじめに

前回は、玉が床から落下しないように壁を作成しました
今回は、スコアとなる収集アイテムを配置していきます

収集アイテムの作成

f:id:baba_s:20171208132708p:plain

Unity メニューの「GameObject>3D Object>Cube」を選択します

f:id:baba_s:20171208132757p:plain

次に、作成した「Cube」を選択して F2 キーを押して
「Pick Up」という名前に変更します

f:id:baba_s:20171208133056p:plain

そして、「Pick Up」のパラメータを下記のように設定します

  • 「Position」(位置)の入力欄に左から順に「0」「0.5」「5」と入力
  • 「Rotation」(回転)の入力欄に左から順に「45」「45」「45」と入力
  • 「Scale」(大きさ)の入力欄に左から順に「0.5」「0.5」「0.5」と入力

f:id:baba_s:20171208133218p:plain

これで、収集アイテムを1つだけ配置することができました

収集アイテムの演出実装

現状、収集アイテムがその場で動かず固まったままなので、
常に回転し続けるようなスクリプトを作成していきます

f:id:baba_s:20171208133536p:plain

「Scripts」フォルダを右クリックして「Create>C# Script」を選択します

f:id:baba_s:20171208133650p:plain

作成したスクリプトに「Rotator」と名前を付けて Enter を押します

f:id:baba_s:20171208133806p:plain

そして、作成した「Rotator」をダブルクリックします

f:id:baba_s:20171208133844p:plain

すると、お使いの環境に合わせて Visual Studio や MonoDevelop などの、
プログラムを書くためのエディタが起動するので、
下記のプログラムをコピーして貼り付けます

using UnityEngine;
using System.Collections;

public class Rotator : MonoBehaviour
{
    void Update()
    {
        transform.Rotate(new Vector3(15, 30, 45) * Time.deltaTime);
    }
}

(今回はプログラムの解説は割愛させていただきます)

f:id:baba_s:20171208134002p:plain

上記のようにプログラムを貼り付けたら
Ctrl + S を押すなどしてスクリプトを保存します

f:id:baba_s:20171208134131p:plain

これで、収集アイテムを常に回転し続けるためのスクリプトの作成が完了したので
Unity に戻ります

f:id:baba_s:20171208134300p:plain

さきほど作成した「Rotator」を「Pick Up」にドラッグして離します

f:id:baba_s:20171208134404p:plain

これで、「Pick Up」を選択すると
「Rotator」が反映されていることがわかります

f:id:baba_s:20171208134500p:plain

これで、エディタ上部の再生ボタンを押してゲームを再生してみます

すると、作成した「Pick Up」オブジェクトが
常に回転し続けるようになったことがわかります
確認できたのでエディタ上部の再生ボタンを押してゲームを停止します

収集アイテムを複製する準備

ここまでで、収集アイテムを1つだけ作成することができたので
複製して配置していきます

前回、壁を作成した時は、Ctrl + D で壁を複製しましたが、
今回は、収集アイテムを「プレハブ」にしてから Ctrl + D で複製していきます

オブジェクトを「プレハブ」にしてから複製すると
大きさや色などのパラメータが共通になるため、
後から大きさや色を変える時に一括で設定を変更することができます

f:id:baba_s:20171208135315p:plain

「Project」の下にある「Create」ボタンを押して「Folder」を選択します

f:id:baba_s:20171208135412p:plain

作成したフォルダに「Prefabs」(プレハブ)と名前を付けて Enter を押します

f:id:baba_s:20171208135645p:plain

そして、「Pick Up」を「Prefabs」フォルダにドラッグして離します

f:id:baba_s:20171208135803p:plain

すると、「Prefabs」フォルダ内に「Pick Up」オブジェクトがコピーされ、
なおかつ、「Hierarchy」の欄に表示されている
「Pick Up」オブジェクトの名前が青くなります

これで、「Pick Up」オブジェクトをプレハブ化することができたので
「Pick Up」オブジェクトを複製していきます

収集アイテムの複製

f:id:baba_s:20171208140810p:plain

「Pick Up」オブジェクトを選択した状態で Ctrl + D を11回押します

f:id:baba_s:20171208140536p:plain

そして、「Pick Up (11)」まで複製したら、円形に配置していきます

f:id:baba_s:20171208140934p:plain

複製した「Pick Up」オブジェクトを順番に選択して
下記のように「Position」を設定してください

オブジェクト名 X Y Z
Pick Up (1) 2.25 0.5 4
Pick Up (2) 4 0.5 2
Pick Up (3) 5 0.5 0
Pick Up (4) 4 0.5 -2
Pick Up (5) 2.25 0.5 -4
Pick Up (6) 0 0.5 -5
Pick Up (7) -2.25 0.5 -4
Pick Up (8) -4 0.5 -2
Pick Up (9) -5 0.5 0
Pick Up (10) -4 0.5 2
Pick Up (11) -2.25 0.5 4

f:id:baba_s:20171208141310p:plain

これで、収集アイテムを円形に配置することができました

収集アイテムの色の変更

f:id:baba_s:20171208141310p:plain

現状、玉と収集アイテムの色が同じで見づらいので
収集アイテムの色を黄色に変更します

f:id:baba_s:20171208141548p:plain

「Materials」フォルダを右クリックして、「Create>Material」を選択します

f:id:baba_s:20171208141633p:plain

作成したマテリアルに「Pick Up」と名前をつけて Enter を押します

f:id:baba_s:20171208141809p:plain

作成した「Pick Up」マテリアルを選択した状態で
「Albedo」の右にある枠を選択します

f:id:baba_s:20171208141934p:plain

「Color」ウィンドウが表示されたら、入力欄に上から順に
「255」「255」「0」「255」と入力して、「Color」ウィンドウを閉じます

f:id:baba_s:20171208142133p:plain

そして、この「Pick Up」マテリアルを「Pick Up」プレハブにドラッグして離します

f:id:baba_s:20171208142222p:plain

これで、すべての「Pick Up」オブジェクトの色を黄色に変更することができました

オブジェクトをプレハブ化していない場合は、
すべてのオブジェクトにマテリアルをドラッグしないといけないですが
オブジェクトをプレハブ化していたおかげで
マテリアルを1回ドラッグしただけで、すべてのオブジェクトの色を変更できました

動作確認

f:id:baba_s:20171208142634p:plain

エディタ上部の再生ボタンを押してゲームを再生してみます

収集アイテムが黄色になっており、なおかつ回転し続けていることがわかります

現状は、玉が収集アイテムにぶつかっても跳ね返るだけで何も起こりません
次回は、収集アイテムを獲得できるようにしていきます

f:id:baba_s:20171207224204p:plain

Unity メニューの「File>Save Scenes」を選択するか、
Ctrl + S を押して、ここまでの作業内容を保存しておきましょう

次のチュートリアル

備考

この記事は上記のチュートリアルの翻訳になります