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を触ってみる3

Unityを触ってみる3

2017/10/11 未分類

はじめに こんにちは。プロダクト開発部兼UGC事業部の長野です。 気づけば3年半振りの投稿です。 本業ではphpやJavaScriptを触っていますが、このブログでは引き続きunityネタで行きます。 今回はunityに今流行のDeepLearningを組み合わせたlisというものを使ってみます...

続きを読む

Unity 4.3触ってみた

Unity 4.3触ってみた

2014/01/8 JavaScript

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

続きを読む

naganoの記事一覧へ

ページTOPへ