devlog [naru design]

プログラミングやテクニカルな内容の覚え書き。

colliderの動きを知るために、簡単なゲーム風のコンテンツを作ってみました。名づけて「無限インベーダ」(名前かぶってたらゴメンナサイ)。左右に砲台を動かしつつミサイルを発射して迫り来るインベーダをやっつけます。

完成イメージは、こんな感じです。

infiniteInvaderPlan

概仕様

・ゲームが始まると3匹のインベーダがランダムな位置に表示される。重なりを避けるために横位置は等間隔で固定。
・左右矢印キーで砲台を左右に動かすことができる。
・上矢印キーを押すとミサイル発射!一度に撃てるミサイルの制限は無し。
・インベーダはミサイルが3発当たると消える。
・3匹のインベーダをやっつけると、再びランダムな位置に3匹のインベーダが表示される。
・インベーダは動きません。
・スコアや終わりは無し。

プロジェクトの設定

Build設定でWebPlayerを選択し、PlayerSettings…で画面サイズを320×240ピクセルに設定します。

カメラの設定

今回のコンテンツは2Dで見せたいので、MainCameraのProjectionをOrthographicsに設定します。

camera_setting

Backgroundは黒、Sizeは10に設定します。

TransformのPositionは(0,0,-10)、Rotationは(0,0,0)、Scaleは(1,1,1)に設定します。

砲台の作成

Unityに用意されているCube(プリミティブ)とEmpty(GameObject)を使って砲台を作成します。

battery2

最初にメニューGameObject-CreateEmptyを選択して、HierarchyにGameObjectを追加します。
TransformのPositionとRotationは(0,0,0)、Scaleは(1,1,1)に設定します。

次にメニューGameObject-CreateOther-Cubeを選択して、HierarchyにCubeを追加します。
TransformのPositionは(0,-0.5,0)、Rotationは(0,0,0)、Scaleは(1,1,1)に設定します。
CubeをGameObjectにドラッグ・アンド・ドロップして階層化します。

作成したCubeを複製します。
TransformのPositionは(0,-1.5,0)、Rotationは(0,0,0)、Scaleは(3,1,1)に設定します。

GameObjectの名前をBatteryに変更します。

ここまでの手順でGameウィンドウは以下のように表示されます。

infiniteInvader1

せっかく作った砲台が暗いのでライトを追加します。

メニューGameObject-CreateOther-DirectionalLightを選択して、HierarchyへDirectionalLightを追加します。
TransformのPositionは(-20,-20,-20)、Rotationは(0,0,0)、Scaleは(1,1,1)に設定します。

infiniteInvader2

砲台が明るく表示されました。

砲台のスクリプト作成

左右矢印キーを押した時に砲台を左右に動かすスクリプトを作成します。

batteryScript

AssetsにC#スクリプトを追加して、名前をBatteryに設定します。

6行目:1秒間に移動する量を設定します。
7-8行目:砲台の移動範囲を設定します。
12行目:砲台の移動量をリセットします。
14-17行目:左矢印が押されていたら砲台の移動量をマイナスします。
18-21行目:右矢印が押されていたら砲台の移動量をプラスします。
23-25行目:現在の座標に砲台の移動量を加算し、範囲内に収まるようにクランプします。

作成したスクリプト(Battery.cs)をHierarchyのBatteryへ追加します。

現在のコンテンツは以下のような状態です。

コンテンツ内をクリックしたのち、左右の矢印キーを押すと砲台が左右に移動します。

Unity3D:ゲーム制作-無限インベーダ(2/4)へ続きます

Pocket

コメントを残す

Trackback URL: