スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[ゲーム制作]ジャイロスコープでユニティちゃんを360度あらゆる角度から狙い撃ちするゲームを作ってみた


youtube版はこちら

ジャイロスコープで視点を操作する簡単なFPSを作ってみました。
iPhoneで動画撮影するような感じで遊べますw

ターゲット(標的)はUnityのオープンソース系アイドル

ユニティちゃん

たぶん日本・・・?のどこかにあるコーゲンシティ在住、現役の女子高生さんですね。

彼女をいろんなアングルから楽しむアプリ!
って企画を考えたらすでに沢山あったので・・・無理やりゲームにしてみました(汗

ジャイロスコープっていうのはiPhoneなどのスマートフォンに搭載されているセンサーの一つで
いわゆる端末を傾けると画面の中で物が動いたりするアレです(謎

で、まぁそれを使ってカメラを動かして遊びます。
冒頭でも書いたようにスマフォをいろんな方向に向けて動画を撮影する感じで遊べます。
画面をタッチすると銃を撃てるのでユニティちゃんに当てれば勝利!

そんなゲームです。

ちなみに現在アップルストアに申請中。
実はマスコットアプリ文化祭2014ってイベントに参加するために作ったんですけど余裕で間に合わずに応募期間が終了してしまいました・・・(泣

ワンチャン審査期間内であれば登録することは不可能ではなきにしもあらず・・・?みたいなので何とかアップルさんの審査がストレートで通ってくれることを祈るばかりです(ガクブル

リジェクト来たら泣きますね;
泣いてあきらめますね;
でもあきらめきれずに申請してヒンシュクかうかもしれませんね;(意味不明
あぁ・・・なんとか間に合ってほしいよぅ(´;ω;`)
スポンサーサイト

テーマ : Unityゲーム制作
ジャンル : コンピュータ

tag : ユニティちゃん unitychan Unity ゲーム制作 スマホゲーム フリーゲーム

[Unity備忘録] アセットをResourcesフォルダに入れるかどうかの判断基準

わりと当たり前な機能にいまさら気づきました;

えーっと、まず

結論1
スクリプトから読み込むファイルは Resources フォルダに入れる。
スクリプトから読み込まないファイルは Resources フォルダに入れない。

そんで

結論2
シーンで使用していないアセットは Resources フォルダに入れていなければビルド時に除外される。

っていうことを学習したのでメモメモ“φ( ̄ ̄*)



先日、Unityのチュートリアル を読んでたら以下の記述が目に止まった。

ビルドの内部工程について
ビルドプロセスではまず、指定された場所にゲームアプリケーションの空のコピーを置きます。
次にビルド設定にあるシーンリストを順にたどりながら、エディターで一旦ひとつずつ開き、最適化し、アプリケーションパッケージとして統合していきます。
そして、シーンごとに必要なアセットを算出し、パッケージにそれぞれ格納していくわけです。


おお!そうだったのか!
そうとは知らず必死こいて制作末期に余計なアセット削除していたよ・・・
無駄な努力だったとは

アセット参照の素敵っぷりの威力を考えれば当然の機能なのでしょう;
想像力が足りなかった世・・・


っというわけで!
べつに疑ってるわけではないのですが、一応確認しておきたい挙動もあるので何パターンか実験してみました。



▼実験手順
1.適当なプロジェクトを作成

2.50MB の wav ファイルを一つ用意して AudioClip として Assets フォルダにインポート

3.その AudioClip を BGM(AudioSource)としてシーンで使用したり使用しなかったりしながら PC(Windows)用に何パターンかビルド

4.***_Data フォルダのサイズを確認して比較



▼実験パターン
(A)→ BGM のないシーンを作成してビルド

(B)→ BGM があるシーンを作成してビルド

(C)(A)のシーンと(B)のシーンを両方 Scenes in Build に追加した状態でビルド
  ※(A),(B)の順番で登録(最初のシーンは(A)
  ※(B)へは遷移しない(コーディングしていない)

(D)(B)のシーンのみを Scenes in Build に追加した状態でビルド
  ※(A)との違いは Scenes in Build を使用してることと Assets フォルダ内に(B)のシーンが存在していること

(E)(D)の状態で BGM の AudioClip を Resources フォルダに移動してビルド



▼実験結果
(A)→ BGM のないシーンを作成してビルド
9MB

(B)→ BGM があるシーンを作成してビルド
59MB

(C)(A)のシーンと(B)のシーンを両方 Scenes in Build に追加した状態でビルド
59MB

(D)(B)のシーンのみを Scenes in Build に追加した状態でビルド
9MB

(E)(D)の状態で BGM の AudioClip を Resources フォルダに移動してビルド
59MB



とまあ(A)(D)までは対象のアセット(BGM)が使用されているシーンがビルドされると 50MB しっかり増えてます。

「使用」というのはもちろん「参照」という意味です。
(C)については今回 Application.LoadLevel などを使用していないので、事実上は BGM を使用するシーンが読み込まれる事はありません。
が、前述の記事では

ビルド設定にあるシーンリストを順にたどりながら、エディターで一旦ひとつずつ開き、最適化し


と書かれていますから Scenes in Build に登録されたシーンは全てチェックされているものと思われます。
((A)と(B)は登録してないけどシーンリストが空の場合は開いていたシーンをデフォルトで選択されたものと思われます)
逆に言えば Scenes in Build に登録されていなければシーンデータ自体は存在していてもチェックされることはないと言えます。

(D)がそれの実例です。
BGMが使用されているシーンを Scenes in Build から除外しただけですが 50MB 減っています。

テスト用のシーンで色々実験に使ったデータだけど本編では使用しなかった、みたいなケースでもテストシーン自体が登録されていないのであれば、パッケージに含まれないので安心して運用できますね。

重要なのは(E)の結果です。
BGM の AudioClip を Resources フォルダに移動しただけで使用されているシーンがないのに 50MB 増えてしまいました。
なぜかと言うと Resources フォルダに入っているアセットはスクリプトから Resources.Load で読み込まれる可能性があるためです。(詳しくはこちら

っと言うより、スクリプトから読み込むアセットをビルド時に除外させないために Resources フォルダがあるんでしょうね^^;

そう言ったわけで冒頭の結論になります。
Resources フォルダに入れるとスクリプトで管理できるので取り回し良さげですが、パッケージサイズを抑えたい場合はなるべく Resources フォルダの使用を控えて、不要なアセットの最適化を Unity に任せてみるのがいいかと思いました。


ちなみに・・・非アクティブな GameObject や無効化された Component に関連付けられたアセットもビルドには含まれるようです。
スクリプトやアニメーションからON/OFFできるからだと思います。
含めたくない場合はシーンから削除するしかありませぬね・・・(・ω・)


この記事の内容はUnity4.5.3で確認したものです。

テーマ : Unityゲーム制作
ジャンル : コンピュータ

[Unity備忘録] UnityでサウンドON/OFFを実装する方法

「くるくる迷路」 v1.1.0 に更新しました!

内容はパフォーマンス改善とバグ修正・・・
あと知人に指摘されたのでサウンドのON/OFFを実装しました。

というわけで今回やったサウンドON/OFFの実装方法を備忘録としてメモメモφ(.. )

具体的には2点

AudioListenerで全てのオーディオを消音(ミュート)
音声のON/OFF状態をPlayerPrefsに保存

▼AudioListenerで全てのオーディオを消音(ミュート)
Unityで全てのオーディオのボリュームを0(消音)にする手っ取り早い方法は AudioListener(オーディオリスナー)を使用すると楽そうです。

// リスナーのボリュームを 0 に設定
AudioListener.volume = 0f;

上記の1行はゲーム全体の音量を0に設定しています。
いわゆるマスターボリュームってやつですね!

上記の値は AudioListener コンポーネントの static なプロパティーです。
AudioListener のインスタンスは必要ありませんので注意してください。

AudioListener ってのはコンポーネントですがシーン上に一つしか配置してはいけません。
自前で作成しておく必要はなく、カメラオブジェクトを作成すると自動的にコンポーネントとして追加されています。

AudioListener(オーディオリスナー)とはその名のとおり音声の聞き手(リスナー)配置するためのコンポーネントです。
Unityのユーザーマニュアルでは「マイクのような機器」と表現されています。

ようは音声を拾ってくれる存在ですね。
2Dゲームだとわかりずらいですが3Dゲームでは音声も3D空間のあらゆる方向から聞こえるようになるため、カメラのようにどの位置で音声を聞くかが重要になってきます。
映像ではカメラを使いますが、音声(オーディオ)ではリスナーを使います。

音源がリスナーに対して左側にあれば音声は左から聞こえますし、リスナーからかなり遠くにあれば音声はとても小さく聞こえます。
カメラが「目」とするならリスナーは「耳」というわけです。

リスナーは特性上、位置と方向のパラメーターを持ちますが、これもカメラと同じ概念です。
そのためかUnityではシーン上にカメラを配置すると自動的にこの AudioListener コンポーネントが追加されて作成されるようです。

実はこの AudioListener 3D専用ってわけでもありません。
2D音源もこいつを使って音を拾われてるわけですが当然ながら位置やら方向やらっていうものには影響されません(されないと思いますたぶん;
とはいえ役にたつパラメーターもあります。先ほどのリスナーボリュームです。

てわけで無理やりまとめると AudioListener.volume を 0 にするとゲーム上で「耳」を完全に塞いだ状態になるということですね。(きっと
ちなみに AudioListener.volume の設定は AudioListener コンポーネントのインスタンスが破棄されてもリセットされません。
ON/OFFで使用する場合はどこかのタイミングで一回設定すればOKです。


▼音声のON/OFF状態をPlayerPrefsに保存
お次はON/OFFの状態をアプリを再起動しても継続させる方法ですが。
これには PlayerPrefs が最適かなと思いました。

詳しくは紹介されてるページが沢山あるので割愛します。
 ■[Unity][Unity3d]ゲームのスコア情報などを簡単に保存出来るPlayerPrefsクラス

気になるのはユーザーから丸見えの場所に保存されてしまううえ、テキストファイルなので閲覧可能、編集可能?ってところですが、今回のような環境設定情報にはデメリットでもなんでもありません(そもそもが環境設定用の機能っぽいですね・・・名称的にも

こいつを使ってさっきのリスナーボリュームを煮込むとこちら!

using UnityEngine;
using System.Collections;

public class AudioSwitch : MonoBehaviour
{
    void Awake()
    {
        if (PlayerPrefs.GetInt("Mute", 0) == 0)
        {
            AudioListener.volume = 1f;
        } else
        {
            AudioListener.volume = 0f;
        }
    }

    void OnGUI()
    {
        if (GUI.Button(new Rect(30, 30, 200, 30), "サウンドON/OFF"))
        {
            if (PlayerPrefs.GetInt("Mute", 0) == 0)
            {
                AudioListener.volume = 0f;
                PlayerPrefs.SetInt("Mute", 1);
            } else
            {
                AudioListener.volume = 1f;
                PlayerPrefs.SetInt("Mute", 0);
            }
        }
    }
}

こいつを適当なオブジェクトにスクリプトとして追加すればOK。
画面に消音ON(or OFF)というボタンが表示されているはずです。

これでサウンドのON/OFFが可能になりました。

ボタンが押されると PlayerPrefs から "Mute" の名前で保存してある数値を取得して・・・

Mute が 0(無効)なら 1(有効)に変更してリスナーボリュームを 0(消音)
Mute が 1(有効)なら 0(無効)に変更してリスナーボリュームを 1(発音)

にしてあります。

アプリを起動し直しても前回の設定が引き継がれておりますヤッター(゚∀゚)

ちなみにON/OFFではなくリスナーボリュームの値そのものを保存すれば・・・
// マスターボリュームを取得
AudioListener.volume = PlayerPrefs.GetFloat("MasterVolume", 1f);
// マスターボリュームを保存
PlayerPrefs.SetFloat("MasterVolume", AudioListener.volume);
ミュートではなくゲームの音量調整にも応用できそうですね(あんま需要ないかな??

以上です!・・・なんか関係ないことグダグダ書いてしまった;;
次はもっとシンプルなメモを取ろうorz

目指せ自分で読み返したくなる文章!!(´▽`;)

※注意※
ちなみに・・・上記のソースコードでは Awake で PlayerPrefs を読み込んで最初にリスナーボリュームを初期化しています。
このスクリプトが起動後の最初の画面にないとデフォルトで音声は鳴ってしまうので注意..._〆(・∀・@)

この記事の内容はUnity4.3.4で確認したものです。

テーマ : Unityゲーム制作
ジャンル : コンピュータ

はじめてのiOSゲームアプリ

こんばんは。tauroponです。
Unity歴2カ月のド素人ですがよろしくお願いします。
レベルは1です(たぶん

Unityっていうのはゲームエンジンっていうやつです。
僕も詳しくは知りません。

この本を衝動買いして始めてしまいました。


Unityによる2Dゲーム開発入門 ~プログラミング初心者がゲームを公開する最短コースUnityによる2Dゲーム開発入門 ~プログラミング初心者がゲームを公開する最短コース
(2014/04/09)
中島 安彦

商品詳細を見る


内容はUnityの基本的な操作説明→サンプルゲームの作成→広告の入れ方→AppStoreやGooglePlayへの登録申請までを解りやす解説されていて助かりました。
僕の場合はインストールして制作開始からAppleに登録申請まで2カ月。
まぁまぁのスピードかと思います・・・(遅い?


まぁ、いいのです

さっそくですがUnityでゲームを作ったので紹介します。

くるくる迷路02

「くるくる迷路」って言います。
その名の通りタッチ操作でくるくる回して遊びます。

くるくる迷路01

くるくる迷路03
くるくる迷路05

中に入ってるボールを出口から外に落とすと成功!

くるくる迷路04


たぶんiPhone/iPadで動くはずです。

ただいま AppStore に申請中
通ればめでたくレベル2に上がります(当社比


言っときますけど初心者じゃありませんよ。
こう見えて前にRPGツクールでゲーム作ったこともあります(キリ

1本だけです・・・

いや、微妙なのカウントすると2本かもしれません。

つまりツクールレベルは3です(当社比
あまく見られては困ります(何

あ、今「戦闘力たったの3・・・ゴミめ」って思った人!

・・・すみません命だけはお助けください。


なんだかよくわからないテンションで申し訳ないです。
誰も見に来ないのをいいことにはしゃいでしまいました(反省

こんな感じのキモい独り言をつぶやいていくブログになりますが間違えて目に入ってしまった方がもしいたら慌てず擦らず水道水で洗い流してください。
それではおやすみなさい。

Apple審査に通りますよ~に~>人<
timeline
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。