20
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Unityで初めてゲームをつくったらクソゲーができた OF THE DEAD

Posted at

この記事について

Unity完全初心者が、入門書片手に何かつくってみたり、みなかったり、ゾンビがでてきたりします。

Introduction

はじめに神は天と地とを創造された。 地は形なく、むなしく、やみが淵のおもてにあり、神の霊が水のおもてをおおっていた。
神は「光あれ」と言われた。すると光があった。 神はその光を見て、良しとされた。神はその光とやみとを分けられた。神は光を昼と名づけ、やみを夜と名づけられた。夕となり、また朝となった。
第一日である。
(旧約聖書 創世記 第1章より抜粋)
つまり、Unityである。

#Unityとは
Unity(別名:Unity3D)とは、統合開発環境を内蔵し、複数のプラットホームに対応するゲームエンジンである。ユニティ・テクノロジーズ(英語版)が開発した。日本法人はユニティテクノロジーズジャパン合同会社。ウェブプラグイン、デスクトッププラットフォーム、ゲーム機、携帯機器向けのコンピュータゲームを開発するために用いられ、100万人以上の開発者が利用している。Unityは主にモバイルやブラウザゲーム製作に使用されるが、コンソールゲーム機およびPCにゲームをインストールすることもできる。このゲームエンジン自体はC言語/C++で書かれているが、スクリプト言語としてC#、UnityScript (JavaScript)、Booの3種類のプログラミング言語に対応している。2005年にOS Xに対応したゲーム開発ツールとして誕生してから、今日ではマルチプラットフォームに対応したゲームエンジンにまで成長した。(Wikipediaより抜粋)
要するに、ゲーム開発エンジンで、天地創造ごっこができる。

#天地創造3分クッキング
新規でスタートすると下のような画面が現れる。宇宙創成の瞬間である。無限の空間に存在しているのは、ただカメラと光源のみ。

fig0.jpg

これでは寂しい。虚無の空間をただ眺めるだけのゲームだ。何かつくってみよう。
万物の根源は立方体である。立方体(Cube)を作ってみよう。

create_cube.jpg

Unityでは、このようにCubeをはじめとする基本的な素材を組み合わせてゲームのフィールドを作っていく。
それでは、虚無の宇宙空間に地表を作ってみよう。Terrainという素材を使うのがいいらしい。

fig3_terrain.jpg

母なる大地の誕生である。ちなみに、白い部分が地表で、外側は虚無の空間が無限に広がっている。地表から落っこちるといつまでも落下し続けるので気を付けよう。
さすがに殺風景なので、草でも植えてみよう。テクスチャーを貼ればいいが、自分で作るのが面倒なので【参考文献】についていたサンプルを借用。

fig4_terrain.jpg

芝生っぽい感じになった。ついでに、マウスでぐりぐりやって山を作る。

キモイ いい感じ
fig5_terrain.jpg fig6_tarrain.jpg
うまくやらないと、キモイ感じ(左)になってしまうので注意。とりあえず、地上が完成(右)。地球は丸くなかった。

人類の夜明け

人とか、建物とかは自作しなくても、Asset Storeというところから入手できる。無料のものもいろいろそろっている。

fig7_store.jpg

倉庫とマッチョをダウンロードしみた。

倉庫 マッチョ
fig8_strage.jpg fig9_mus.jpg

マッチョを追加したら、エラーが止まらなくなった。仕方がないので、最初からやり直し。宇宙の終焉である。

fig10_space.jpg
(背景にキャラ用のテクスチャーを貼ってみた。)

ボールの誕生

マッチョがいない世界を作り直した。倉庫しかないので、ボールでも作ってみよう。ボールは3DオブジェクトのSphereを選択する。
しかし、このままでは、重さも当たり判定もないボールのゴーストでしかない。属性にPhysics Rigidbodyから摩擦・反発・重力落下などを設定してやる。すると、普通の物体みたいに扱えるようになる。

fig11_rigidity.jpg

ここで、ボールを投げるだけの単純なゲームを作ってみる。マウスでクリックした方向にボールを飛ばすだけの簡単なお仕事だ。
ゲーム内でのオブジェクトの動きはC#かJava Scriptで記述する。参考文献のサンプルコードをまるパクりして下のようにしてみた。

ボール投げ
#pragma strict
 
public var prefab : GameObject;
public var power : float;
 
function Update () {
    if(Input.GetMouseButtonDown(0))
    {
        var bullet = LoadBullet();
        var ray : Ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        var dir : Vector3 = ray.direction.normalized;
 
        bullet.GetComponent.<Rigidbody>().velocity = dir * power;
    }
}
 
function LoadBullet() : GameObject{
    var bullet = GameObject.Instantiate(prefab)as GameObject;
    bullet.transform.parent = transform;
    bullet.transform.localPosition = Vector3.zero;
    return bullet;
}

実際に、投げてみる。

throw_ball1.jpg throw_ball2.jpg throw_ball3.jpg

うまくいった模様。宇宙にボールが誕生した瞬間である。

ゾンビ製造器

マッチョがうまくいかなかったので、ゾンビで代用。ゾンビを無限発生させてみる。
ゾンビをダウンロードして、Rigidbodyを設定。

fig13_makezombi.jpg

ゾンビが湧き出してくるようにスクリプトを記述。このスクリプトも【参考文献】のサンプルコードを流用。
もとは、ひよこをつくるスクリプトだったので変数名にhiyokoが残っている。ご察しの通り、今はhiyokoとはゾンビのことである。

ゾンビ製造器
#pragma strict
 
public var obj : GameObject;
public var interval : float = 3;
private var time : float;
 
function Start () {
}
 
function Update () {
        time += Time.deltaTime;
        if(time >= interval)
        {
            time = 0;
            var hiyoko : GameObject = Instantiate(obj)as GameObject;
            hiyoko.transform.localPosition = Vector3(
                Random.Range(40.0, 60.0) ,
                Random.Range(1.0, 10.0) ,
                Random.Range(50.0, 70.0));
        }
}

スクリプトを動かしてみる。

fig14_vszombi.jpg

うまくいった。山のあたりからゾンビが湧き出してくる。
ついでに、ゾンビがカメラに向かってくるように、スクリプトにゾンビの動きを記述。

ゾンビの動き
#pragma strict
 
public var power : float = 8.0;
private var target : GameObject;
 
function Start () {
    target = GameObject.FindGameObjectWithTag("DeathZone");
}
 
function FixedUpdate() {
    var direction : Vector3 = target.transform.position - transform.position;
    GetComponent.<Rigidbody>().AddForce(direction.normalized * power);
    transform.LookAt(direction);
}

動かしてみる。

fig15_vszombi.jpg

何故か横移動だけど、とりあえず動いた。あと、足が地面にめり込んでる。

天地創造 OF THE DEAD

ゾンビが集まってくるとうざいのでボールをぶつけて追っ払うゲームにしてみた。

fig15_vszombi.jpg fig16_vszombi.jpg fig17_vszombi.jpg

まぁ、ほっといてもゾンビは地表から落っこちて勝手に消えていきますけど。
とくにゲームオーバーとかないので、ただひたすらゾンビにボールをぶつけるだけ。

プレイ動画(1ヶ月くらいで消えます)
動画ではかくかくですが、実物はもっと滑らかです。

~おしまい

参考文献

Unity5入門 最新開発環境による簡単3D&2Dゲーム制作
荒川 巧也 (著), 浅野 祐一 (著)、SBクリエイティブ
*)この記事のスクリプトは、この本のサンプルより借用

unity_book.jpg

20
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?