Allied ArchitectsAllied ArchitectsEngineer Blog

Unity 4.3を触ってみる2

2014/05/8 JavaScript

こんにちは。システム部の長野です。

今回も前回に引き続きUnityネタで行きます。
今流行の鳥を飛ばして障害物を避けていく某人気ゲームのようなものを作ってみました。
(既に出尽くした感満載ですが、、)

サンプル

※閲覧するにはUnity Web Playerのインストールが必要です。

ゲーム説明

・スタートを押すとボールが落下します。
・画面をクリックするとボールが少し浮きます。
・障害物にあたるか地面に落ちるとゲームオーバーです。
・障害物を避けると1点です。

スクリプト解説

今回書いたスクリプトは二つです。

progress.js・・・ゲームの進行等、あたり判定以外のすべての処理。progressオブジェクトに割当てています。

tama.js・・・・・あたり判定処理。playerオブジェクトに割当てています。

プロジェクト構造は以下のキャプチャを参照ください。untitle_unity_-_2dnotest_-_Web_Player

progress.js

tama.js

スタートボタン

OnGUI()内でGUI.Button()を呼ぶとボタンが表示されます。
playingでプレイ中かを判断し、プレイ中は表示しないようにしています。
スタートボタンをクリックしたらゲーム初期化用のinitGame()を呼んでいます。

ゲーム初期処理

playerはインスペクタ側であらかじめ玉のオブジェクトに割り当てられています。
この玉のX、Y位置とz回転を0で初期化し、玉を初期位置に配置させています。

このrigidbody2D.WakeUp()で重力等の物理モードをオンにしています。

フレーム処理

ここではマウスクリック処理、フレーム毎の処理、ゲーム停止中の処理を書いています。

マウスをクリックしたとき、玉に対して上方向に200の力を加えています。

フレーム毎に障害物(barrier)を左に動かしています。
画面の左端まで行ったらスコアを加算させて、

で右端に戻しています。
そのときにY軸をランダムにすることで障害物の穴の位置を微妙に変化させています。

障害物に当たったときにplayingがfalseになり、
その場合はスタートボタンの入力待ちになるため物理モードをオフにします。

あたり判定処理(tama.js)

OnCollisionEnter2D()で自身に別のオブジェクトが衝突したときを判定しています。
この関数を呼ぶだけで、障害物や地面に当たったときの判定が取れます。
この中ではprogress.jsのplayingをfalseにしています。

最後に

解説は以上になります。
重力周りや当たり判定が簡単に実装できるので
少ないスクリプトで面白いゲームが色々作れそうですね!

このブログを書いている時点でUnity5の予約も始まっており、
Unity5はWebGLに対応しているということなのでいつかこのブログで書きたいです。

nagano
  • nagano
  • Webエンジニア
  • サービス開発や社内インフラ等を担当しています。 このブログではJavaScript周りのネタを中心に書いていきたいです。

RELATION ENTRY

Unity 4.3触ってみた

Unity 4.3触ってみた

2014/01/8 JavaScript

こんにちは。システム部の長野です。 ブログのデザインがリニューアルして初めて書きます。 リニューアルに伴ってメンバー紹介ページができました。 そこではJavaScriptを中心に、、と書いたのですが、 最近Unityを触ってみたので今回はそのことについて書きます。 なぜUnit...

続きを読む

iOS7のMobile Safariで「Page Visibility API」を試す

iOS7のMobile Safariで「...

2013/09/25 JavaScript

こんにちは。 iPhone5sを販売初日に手に入れようとApple Store渋谷店に朝4:30から並びましたが、 会社の始業時間が迫っているのにApple Storeの姿を見ることすらできず泣きそうになった長野です。 ちなみに次の日に少し並んだら買えました。 さて、9/18にiOS...

続きを読む

naganoの記事一覧へ

ページTOPへ