今回も参加させていただきます。
Unity 1週間ゲームジャム 今週のお題「ぎりぎり」 | 無料ゲーム投稿サイト #unityroom https://t.co/2uhr9rdqDr #unity1week
— naichi (@naichilab) June 3, 2018
お題出ました〜〜。では今週もよろしくお願いします!!
1日で作ってしまいました!
こちらからどうぞ↓
ギリギリパンツガール | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう
追記:トップ6入ってる!!!!!!やったー!!!!!嬉しいいいいいいい
- お題:ぎりぎり
- モザイク
- モザイクをパンツにかぶせよ
- 点数
- アニメーション
- アニメーションの遷移が終了したら、ゲームを終わる
- ポイント加算を止める
- 細かいところ
- ツイート機能
- ランキング
- 追記:いただいた反応
- 最後に
お題:ぎりぎり
ニコニ立体ちゃんことアリシアちゃんのパンツにモザイクをかけるゲームにします。
何がギリギリなのかよくわからないけど、色々ギリギリだと思います。
モザイク
モザイクはこちらのアセットを使わせていただきました。
キューブなど任意のオブジェクトにモザイクシェーダーを付ければモザイクがかかります。
こんな感じでモザイクがかかります。
ちなみにパンツの色は目立たせるためにフォトショップで変えました。
モザイクだけではどこにモザイクがあるかが見にくいので、こちらを参考にアウトラインを入れました。
モザイクをパンツにかぶせよ
こちらのスクリプトでモザイクキューブをマウスで動かせるようにしました。
Z軸は動かせないので、モザイクが後述する対象キューブ(パンツ)と同じz値になるようにしました。
Vector3 tmp = moto.gameObject.transform.position;
Vector3 moza = this.gameObject.transform.position;
this.gameObject.transform.position = new Vector3(moza.x, moza.y, tmp.z);
点数
モザイクとパンツの距離が<0.1ならセーフにします。
腰(パンツ)部分に判定用のキューブをセットし、透明にして、モデルのルートの中に入れておきます。
この判定用キューブとモザイクキューブの距離を判定します。
Vector3 Apos = objA.transform.position;
Vector3 Bpos = objB.transform.position;
float dis = Vector3.Distance(Apos, Bpos);
if (dis < 0.1)
{
text.text="Safe!";
a++;
point.text = "SafePoint:"+a;}
else
{
text.text = "Out!";
}
セーフの間はaにポイントが入るようにしました。
ただどこかにdeltaTimeをかけないと、点数が実行環境に依存してしまいます。
a++のところを
a = a + 5 * Time.deltaTime;
としました。
多分1秒間に5回1が足される。
アニメーション
モデルのポーズ及びアニメーションはUnitychanを使いました。
© UTJ/UCL
アニメーションの遷移が終了したら、ゲームを終わる
アニメーションの終わりはStateMachineBehaviourで察知できるそうです。初めて使いました。
BaseLayerを押して、インスペクタのAdd Behaviorから適当な名前でスクリプトを作ります。
開くとなんかいろいろ書かれています。OnStateExitの部分をコメントアウトしてそこにアニメーションが終わった時の処理を書きます。
if (stateInfo.IsName("Last"))でどのアニメーションが終わったらかを書く。
ここに終わりのUIを表示させるスクリプトを書こうと思ったけど、StateMachineBehaviourはpublicで何も読み込めないそうです。
StateMachineBehaviourはシーンにあるオブジェクトへの参照をエディタ側で設定できない事です
boolをtrueにして別のスクリプトから読めるかと思ったけどそれもできない・・・
結局transform.Findを使えばオブジェクトをスクリプトで取得できました。
parent = GameObject.Find("End");
Canvas = parent.transform.Find("EndCanvas").gameObject;
Canvas.SetActive(true);
空のオブジェクトで親を作って、親をFindし、さらにそこからtransform.Find
UnityでアクティブでないGameObjectを取得する | 生存日記」
できた!
ポイント加算を止める
終わりのキャンバスが現れたらポイントを加算するのをやめたいです。
EndCanvasがアクティブでないときだけ加算するようにしました。
activeSelfでactiveかどうかが取れるそうです。
if (dis < 0.1)
{
text.text = "Safe!";
if (EndCanvas.activeSelf == false)
{
a = a + 5 * Time.deltaTime;
point.text = "SafePoint:" + (int)a;
point2.text = "SafePoint:" + (int)a;
}
}
細かいところ
瞬きをするようにしました
カメラのほうをずっと見てくれるようにしました。
BGMを入れました。
いいなと思ったBGMが18禁作品には使用禁止と書いていて、念のためやめました。18禁の定義は調べたらあいまいでした。絶対違うと思うけど。
背景を変えました。
サムネも作りました。
ビルドするときにエラーがでる。
ツイート機能
こちらのアセットを使わせていただきました。
ツイートしたい場所で
public void onTweet()
{
naichilab.UnityRoomTweet.Tweet("girigiri_arisia", "ギリギリパンツガールで"+ (int)a +"ポイント獲得しました");
}
こんな感じに書けば簡単にできました。
すごい!
ランキング
いっぱい遊んでいただいているので、急遽ランキングもつけることにしました。
GUIで色を変えます。
Rankingの部分はPrehabsのRankingNodeを開いた中に名前やスコアのテキストがあったのでそこで色等を変更できました!(見つけるの大変だった)
ボタンを押したらランキングページが出るようにする。
public void onRanking()
{
naichilab.RankingLoader.Instance.SendScoreAndShowRanking((int)a);
}
エラーが出る
NCMBSettingsスクリプトを張る、ゲームオブジェクトの名前をお手本通りちゃんとNCMBSettingsに直したら治りました!!!!!!えええ
以下はわからなかった時の嘆き&その他バグ
--------------------------------------------------------------------------------------------------------------------
ハイスコアが取得できないし、送信もできない。
サンプルシーンでは、送信はできるけどランキングは出ない。
せっかくGUI頑張ったからビルドだけでもしようとしたら、ビルドもできない。
ビルドは全部を別の新しいプロジェクトに移したらビルドできた。
しかしそのビルドしたやつをunityroomにあげたらポップアウトが出て遊べない。
自分の環境ではこのポップアップが一日中出て遊べなかったけど、ほかの方は遊べていたそうです。
やばいと思い、前のバージョンのをアップロードしようとしたらフォルダがない(buildフォルダ)
gitとか使っていないので、エラーが出るランキング部分を消して再びビルドしました。
ちゃんとビルドできた回のデータぐらいは手作業のコピーでもいいからとっておいたほうがいいと思いました。
あと突然すべての文字が真っ黒になりましたが、Unityを再起動すれば治りました。なんなんだ!!!!
追記:いただいた反応
最初にも書きましたが、なんとTOP6に入っていました!嬉しい!!!いっつもUnity1weekで公開したもののランキングが下から数えた方が早かったので、ふてくされていたのですがご機嫌になりました。
ギリギリパンツガール | 無料ゲーム投稿サイト #unityroom https://t.co/n3YE18GmNi #unity1week モザイクでパンツを隠すゲームとか天才か pic.twitter.com/WHkGnH7VIX
— 椿 (@tsubaki_t1) June 11, 2018
尊敬する椿さんに天才って言われちゃったよ!嬉しい!
なるほど発想の勝利
— そのへん (@sono_hen) June 10, 2018
ちなガン見しました
ギリギリパンツガール | 無料ゲーム投稿サイト #unityroom https://t.co/Q06OGPiIBR #unity1week
やったー!
サムネにホイホイされちゃうよね。ネタゲーかと思ったら、ちゃんとよく出来ててスゴイ!
— パン@初アプリ『モンスターカンパニー』初回特典付きでリリース開始! (@pann_burukuri) June 10, 2018
ギリギリパンツガールで129ポイント獲得しました! https://t.co/6xaEckrF3o
よくできてるって言っていただけた!
ギリギリパンツガール | 無料ゲーム投稿サイト #unityroom https://t.co/JrQIWMvzca #unity1week
— なないろアーク@R18 (@NanairoArc) June 10, 2018
とっても良いです。とっても良いのです。良いのです。
何がとは言えないけど!
とても良い!
天才
— crimnut (@crimnut) June 11, 2018
ギリギリパンツガール | 無料ゲーム投稿サイト #unityroom https://t.co/bY1CPls27Q #unity1week
天才!
お題にドストレートのすばらしさ
— さくらがし (@chery_july) June 10, 2018
ギリギリパンツガール | 無料ゲーム投稿サイト #unityroom https://t.co/mQkMi4dOnG #unity1week
今までで一番お題に沿ってる!
ゲーム自体にもコメントいただいていてとても嬉しいです!
最後に
ここから遊べます。
https://unityroom.com/games/girigiri_arisia
今回はStateMachineBehaviourやgameobject.findなどを学びました。
一日で作った割にはいい感じなのでは?
正直自分ではエロいかどうか全くわからないけど、とても良いと言っていただけているので良いのではないか。
それもこれもニコニ立体ちゃんのゆるい利用規約とパンツのおかげですね。