◎ HowToMake全部見せます企画 ~Unity版~ ◎


8ページ目

§19 BとCを追加する
これまではAのみで動作確認をしてきたけれど、全部付けたい機能を付けたので、
ターゲットにBとCを追加して動かそうと思う。

1.判定
TargetCtrlの中に
void calA()のコピペでvoid calB()とvoid calC()を増やす。
TGTの数字を、BとC用に書き換える。
あと、foreach文の中身、これをこのままコピペしても、一種類しか止まらないので、
三種類全部止まるようにする。
ターゲットのプレハブに付けるタグを三つ共通したものに変更。
何でもいいけど、わかりやすいように新たに「prefab」と作り、三つともそのタグに変更。
foreach文もFindするタグを「prefab」に変更。OK。

新しく「SpreB」「SpreC」というスクリプトを作って、
その中にSpreAの中身をコピペ。
マウスを押した時のSendMessageの宛先をBとCに変更。

2.配置
BとCも配置しないといけないので、
TargetCtrlの中のfor文をコピペして2つ増やし、
それぞれ貼り付けるGameObjectの名前をBとCに変える。

あ、忘れてたんだけど、
プレハブ自体のBとCに、それぞれのスクリプトと、Ragidbody2DとCircleCollider 2Dを追加。Aと同じ設定に変更。
これでいいはず。

ステージに配置してるプレハブは消しておこうねぇ…

再生するぜ!



あ、こぼれた……。困りますよお客さん!
ということで、上のほうまで囲いを作る。


伸ばしました。これで配置も完璧です。
何度も試してみて、ちゃんとこぼれないことを確認。OKOK。
もうゲームはできたも同然! こんどこそ本当にできたも同然!(七回目)




§20 見た目をととのえる
さて、§19の確認で何度も見たと思うんですがね。
文字がオブジェクトにダダ被りで読み辛い!
ので、テキストの背面にボタンみたいなパネルを置きましょう。

GameClearを配置して、Textの上にImageを追加。
このCanvas内は、下が手前に表示されるので、この並びが肝心。
右の「Source Image」のところに、ボタンと同じ柄の「UISprite」を設定。
統一感が出るから……せめてもの統一感……
これをTextと同じサイズ、同じポジションに設定。
すると、ちょっと文字が左に寄ってたように見えたので、Textの方は幅を5ほど小さくしました。
いいんじゃない。
反映。


GameFaildの方も同じようにバックを追加して、反映。

わーできたできた。できたぞー。

あれ? クリアした時にもう一回ボタンを押すとFaildになるな? しかもタイマーまた復活するな?
なんじゃこりゃ。Faildの時は何ともないぞ。
……。
…………。
あー。
もう一回ボタンの後ろにあるターゲットが押せてるんですね! めんどくさい……。

仕方ないので、構造改革を行いますよ。めんどくさーい。

まず、TargetCtrlの中のforeach文を新しくvoidにして、
ゲームが終わったらそれを呼ぶことにします。
おっと、ちょうどいい関数がすでに準備されてるんですが、
あれもこれも突っ込むと、今度これをみてゲームを作りたいときに困るので、
ちゃんと新しいものを準備しますよ。はいはい。

// ゲーム終了時にターゲットからスクリプトを外すためのもの
void OnEnd(){
//prefabという配列としてprefabのタグがついたGameObjectを取り込む
GameObject[] prefab = GameObject.FindGameObjectsWithTag ("prefab");
//Pにprefabの中身を一個ずつ入れて{}の中身を実行してくれ
foreach (var P in prefab) {
P.SendMessage ("End");
}
}

Faildの時だけじゃないので、この関数をOnEndにして、
呼ぶ関数=ターゲットに付けていたOnFaildをEndと改名しましたよ。

foreachが書かれていたところと、残量がゼロになった時のところに、
OnEnd();
を書いて、終わるたびに関数を実行してもらいます。
どんなに多くても29個だから重くないでしょ。へーきへーき。よし。

再生だ!

よし、ちゃんと動いたぞ!

こういうこともあるのでなかなか最後まで気を抜けない。
ふぅ……。


あと、見た目が残っているのは、ゲームが始まるときだ。
ボタン一個だけ配置、では、なんのゲームなのかわかんない。

ちょっと画像書いてこよう。
UIで作ってもいいんだけど、indexくらいはかっこよくきめたいよね。
というわけで作ってきて、picに入れて、GameStartのところにはりつけました。サイズもこんな感じでいいかな。

プレハブに反映させて、できあが…らない。

Gameビューの表示サイズを720*1280に固定してたんだけど、
これをいろいろ動かすと、壁とか見えてる。はずかしい!
Webplayer専用ならいいかもしれないけど、
アプリにするときにはこの外側が見えちゃうので、
バックのカラーを壁と同じ色にします。天才か。

左のところからMain Cameraを選択。右に「Background」といういかにもな設定項目があるので
同じ色にしましょう。
見えないところにも気を配っておくと安心感増すよね~。

(rectのふちがピンク色なことから目をそらせなくなったのでこっそり修正)
(保存フォルダのAssetts→picから直接rect画像を全部オレンジにして上書き保存)
(そうしてUnityを再起動すれば…)
(くくく……何事もなかったかのように全部オレンジ……!)




§21 完成しました
これでゲームの中身は完成したぜ! 完璧~フゥフゥ~~↑↑
(しれっとツイートする内容にハッシュタグとURLも載せた)

それでは公開できるようにビルドしましょうねぇ。
上のところにある「File」→「Build Setting」を選択。
WebPlayerを選択して、下の「Player Setting...」をクリック。
右のところに出るSettingの一番上のR何とかかんとかにある、
デフォルトスクリーンサイズを、今回予定している720×1280にすると完全にでかすぎるので
360×640にしよう。
Add Curent...をクリックして、今見ているシーンを追加。


これでビルドして…
HTMLをChorome以外のブラウザで見れば…
できあがりじゃ!

ずれてる!!!!!


このずれは、Canvasのなかのアンカーの場所が悪いとかなんとかそういう話のはず。
文字の表示「Hyouji」のプレハブを一旦シーンに配置して、
それぞれの表示の「Rect Transform」の照準みたいなやつをクリックすると、アンカーの位置をいじれるので、
ど真ん中から底辺の中央へ変更。これで画面の下からナンボの位置に表示する、はず。

それから、左で「Hyouji」を選択して、右のところ、上から三番目の「Canvas Scaler」を見る。
「UI Scale Mode」をpixelから「Scale With Screen size」へ変更。
その下の「Refarence Resolution」をWebPlayerで指定する「360×640」へ変更。

すると、画面上で文字の配置がちょっと変わっているので(小さくなった)、
文字の大きさや配置をいいように再調整。
これでいいはず。
はず。
ビルド。
(上書きしますか?って聞いてこないの結構ビビるな……)


どれどれ。

おっ、完璧ジャン!

ツイート機能もバッチリじゃねーの。

ゲーム、できた!!!!!!

できたよ!!!!!

総純粋作業時間は20時間くらいです!
24時間以内にゲームできたぜ!
ちょっと無理があるかな。まぁまぁ。
でももうちょっと続くんじゃ。



§22 Webへの公開とあほげーエントリー
長かった! やっと来ましたな、いよいよHTMLを触りますぞい。
えっ、そのままでいい? じゃぁそれでいいけど……。

触るって言っても、まぁ自分のHPのCSS当てるとか、HPに戻るボタン付けるとか、あほげーに行くボタン付けるとか、
やることと言ったらそれぐらいです。

これを自分のHPとかにアップロードすれば、Webへの公開は完了。
特にいうことないです。

では、あほげーのエントリーの仕方について、
そんなに難しくないんですがちょっと聞いてください。

まず、スクリーンショットをとります。
幅200pxで固定なので、適当にリサイズしたりトリミングしたりして、
どんなゲームなのかわかりやすい画像を作りましょう。

それから、
あほげー( http://ahoge.info )のHPの中にある「エントリー」を押して…
必要な欄を埋めて……
サムネイル画像のところにさっき作った画像をアップロードして……

送信確認!

記入内容OKだったら送信!

すると、エントリーに書いたメールアドレスに、書いたメールアドレスからメールが届いたら、
エントリー完了!

やったぜ。

のちのち、あほげー運営が手作業でゲームの内容をチェックして、
動かなくないか、内容が過度にまずくないか、を見たのちに、
締め切りの日の17:00くらいから公開作業を始めます。
エントリー後に、連絡したいことができたら、
送ってもらったメールアドレスか、判ればTwitterのDMとかで連絡しますので、
エントリー作品一覧に載るまでは連絡が取れてくれるとうれしいです。

よほどのことがない限り、連絡はないので、大丈夫だと思います。


あとは、締切の翌日に「すべての作品を」「長短かかわらず必ずプレイして」わいわいやる放送をするので、
見てもらえたらな、と思います。



§23 より良くするには

今回、完成させることに重きを置き、搭載していない機能がたくさんあるです。

・ゲーム開始時の遷移を「スタートボタンを押す→ターゲットを周知→カウントダウンでゲームスタート(時間計測開始)」にする
・ゲームのスコアに応じてツイート内容が変わる
・3種類のセットを複数種類作成
・ハイスコア記録機能

これくらいの機能がつくと、ゲームとしてももっと楽しく、繰り返し長く遊んでもらえるんじゃないだろうか、と考えているんだけど、
言うは易く行うは難しという言葉の通り、結構めんどくさい。

ただ、これらのうち、スコアに応じてツイート内容が変わるのは多分簡単に実装できるので、
ヒントを書いておきます。

・TargetCtrlに送るスコアをfloatに変更
・基準のスコアがどこの範囲に入っているのか判定する(ifで分ければいいんじゃないですかね)
・範囲毎に文章が変わるように、ボタンの関数にifで分岐する
(ツイートするにはstringじゃないとダメだった気がするので、注意してください)

多分これで……作ってないから自信ないけど。


それから、Unity制作のステップアップとしては、次は「アニメーション」機能を使用した演出などを使うといいんじゃないでしょうか。
今回わざと使ってないんです。あれ、説明が面倒臭くて……。
使い方は直感的だとは思うので、ぜひ。



§24
 24時間でゲームなんて出来上がるわけないだろ!
いい加減にしろ!!!
私もそう思うんだけど、意外と何とかなるんだよね。
あと、
「締切翌日の17:00までだったらどれだけ早くエントリーしてもHPでの公開時間は同じ」
「締切すぎても放送に間に合えば放送で紹介される」
という情報だけ覚えておいてもらえたら大丈夫です。
締切なんて飾りなんですよ(そもそも会長が遅刻常習犯)。

そもそも最終締め切りは次回のあほげーが開催されるまd……おっと誰か来たようだ。



おわり。






←前へ 目次