トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

unity1week「ギリギリパンツガール」

今回も参加させていただきます。

 

1日で作ってしまいました!

こちらからどうぞ↓

f:id:bibinbaleo:20180605181107p:plain

ギリギリパンツガール | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

 

追記:トップ6入ってる!!!!!!やったー!!!!!嬉しいいいいいいい

f:id:bibinbaleo:20180611103444p:plain

お題:ぎりぎり

ニコニ立体ちゃんことアリシアちゃんのパンツにモザイクをかけるゲームにします。

3d.nicovideo.jp

何がギリギリなのかよくわからないけど、色々ギリギリだと思います。

モザイク

モザイクはこちらのアセットを使わせていただきました。

キューブなど任意のオブジェクトにモザイクシェーダーを付ければモザイクがかかります。

f:id:bibinbaleo:20180604220901p:plain

こんな感じでモザイクがかかります。

f:id:bibinbaleo:20180604220205p:plain

ちなみにパンツの色は目立たせるためにフォトショップで変えました。

モザイクだけではどこにモザイクがあるかが見にくいので、こちらを参考にアウトラインを入れました。

nn-hokuson.hatenablog.com

 

f:id:bibinbaleo:20180604220831p:plain

 

パンツ専門ポーズ集 パンツが大好きだから、大至急パンツを描きたい!

パンツ専門ポーズ集 パンツが大好きだから、大至急パンツを描きたい!

 

モザイクをパンツにかぶせよ

こちらのスクリプトでモザイクキューブをマウスで動かせるようにしました。

neareal.com

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);

[Unity]オブジェクトの座標の取得と変更

点数

モザイクとパンツの距離が<0.1ならセーフにします。

腰(パンツ)部分に判定用のキューブをセットし、透明にして、モデルのルートの中に入れておきます。

f:id:bibinbaleo:20180604220341p:plain

この判定用キューブとモザイクキューブの距離を判定します。

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が足される。

blog.mohyo.net

アニメーション

モデルのポーズ及びアニメーションはUnitychanを使いました。

f:id:bibinbaleo:20180604221141p:plain

© UTJ/UCL

アニメーションの遷移が終了したら、ゲームを終わる

アニメーションの終わりはStateMachineBehaviourで察知できるそうです。初めて使いました。

nn-hokuson.hatenablog.com

BaseLayerを押して、インスペクタのAdd Behaviorから適当な名前でスクリプトを作ります。

f:id:bibinbaleo:20180604221414p:plain

開くとなんかいろいろ書かれています。OnStateExitの部分をコメントアウトしてそこにアニメーションが終わった時の処理を書きます。

if (stateInfo.IsName("Last"))でどのアニメーションが終わったらかを書く。

f:id:bibinbaleo:20180604221257p:plain

ここに終わりのUIを表示させるスクリプトを書こうと思ったけど、StateMachineBehaviourはpublicで何も読み込めないそうです。

f:id:bibinbaleo:20180604172708p:plain

StateMachineBehaviourはシーンにあるオブジェクトへの参照をエディタ側で設定できない事です

tsubakit1.hateblo.jp

boolをtrueにして別のスクリプトから読めるかと思ったけどそれもできない・・・

portaltan.hatenablog.com

結局transform.Findを使えばオブジェクトをスクリプトで取得できました。

parent = GameObject.Find("End");
Canvas = parent.transform.Find("EndCanvas").gameObject;
Canvas.SetActive(true);

空のオブジェクトで親を作って、親をFindし、さらにそこからtransform.Find

UnityでアクティブでないGameObjectを取得する | 生存日記」

f:id:bibinbaleo:20180604173133p:plain

できた!

ポイント加算を止める

終わりのキャンバスが現れたらポイントを加算するのをやめたいです。

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;
}

}

tech.pjin.jp

細かいところ

瞬きをするようにしました

udasankoubou.blogspot.com

カメラのほうをずっと見てくれるようにしました。

BGMを入れました。

dova-s.jp

dova-s.jp

いいなと思ったBGMが18禁作品には使用禁止と書いていて、念のためやめました。18禁の定義は調べたらあいまいでした。絶対違うと思うけど。

dova-s.jp

背景を変えました。

f:id:bibinbaleo:20180604212858p:plain

サムネも作りました。

f:id:bibinbaleo:20180605181107p:plain

ビルドするときにエラーがでる。

bibinbaleo.hatenablog.com

ツイート機能

こちらのアセットを使わせていただきました。

github.com

ツイートしたい場所で

public void onTweet()
{
naichilab.UnityRoomTweet.Tweet("girigiri_arisia", "ギリギリパンツガールで"+ (int)a +"ポイント獲得しました");
}

こんな感じに書けば簡単にできました。

f:id:bibinbaleo:20180605120210p:plain

f:id:bibinbaleo:20180605123823p:plain

すごい!

ランキング

いっぱい遊んでいただいているので、急遽ランキングもつけることにしました。

blog.naichilab.com

GUIで色を変えます。

f:id:bibinbaleo:20180611131012p:plainf:id:bibinbaleo:20180612105519p:plain

Rankingの部分はPrehabsのRankingNodeを開いた中に名前やスコアのテキストがあったのでそこで色等を変更できました!(見つけるの大変だった)

f:id:bibinbaleo:20180612105511p:plain

f:id:bibinbaleo:20180612110409p:plain

ボタンを押したらランキングページが出るようにする。

f:id:bibinbaleo:20180611141839p:plain

public void onRanking()
{
naichilab.RankingLoader.Instance.SendScoreAndShowRanking((int)a);
}

 

エラーが出る

f:id:bibinbaleo:20180611131158p:plain

NCMBSettingsスクリプトを張る、ゲームオブジェクトの名前をお手本通りちゃんとNCMBSettingsに直したら治りました!!!!!!えええ

f:id:bibinbaleo:20180612105709p:plain

以下はわからなかった時の嘆き&その他バグ

--------------------------------------------------------------------------------------------------------------------

ハイスコアが取得できないし、送信もできない。

f:id:bibinbaleo:20180611130545p:plain

サンプルシーンでは、送信はできるけどランキングは出ない。

f:id:bibinbaleo:20180611141826p:plain

せっかくGUI頑張ったからビルドだけでもしようとしたら、ビルドもできない。

ビルドは全部を別の新しいプロジェクトに移したらビルドできた。

f:id:bibinbaleo:20180611143908p:plain

しかしそのビルドしたやつをunityroomにあげたらポップアウトが出て遊べない。

f:id:bibinbaleo:20180611144538p:plain

自分の環境ではこのポップアップが一日中出て遊べなかったけど、ほかの方は遊べていたそうです。

 

やばいと思い、前のバージョンのをアップロードしようとしたらフォルダがない(buildフォルダ)

f:id:bibinbaleo:20180611143848p:plain

gitとか使っていないので、エラーが出るランキング部分を消して再びビルドしました。

ちゃんとビルドできた回のデータぐらいは手作業のコピーでもいいからとっておいたほうがいいと思いました。

あと突然すべての文字が真っ黒になりましたが、Unityを再起動すれば治りました。なんなんだ!!!!

f:id:bibinbaleo:20180612110231p:plain

追記:いただいた反応

最初にも書きましたが、なんとTOP6に入っていました!嬉しい!!!いっつもUnity1weekで公開したもののランキングが下から数えた方が早かったので、ふてくされていたのですがご機嫌になりました。

尊敬する椿さんに天才って言われちゃったよ!嬉しい!

 

やったー!

よくできてるって言っていただけた!  

とても良い!

 天才!

 今までで一番お題に沿ってる!

 

ゲーム自体にもコメントいただいていてとても嬉しいです!

瞬撮アクションポーズ05 あおりモーション[女子高生編]

瞬撮アクションポーズ05 あおりモーション[女子高生編]

 

最後に

ここから遊べます。

https://unityroom.com/games/girigiri_arisia

今回はStateMachineBehaviourやgameobject.findなどを学びました。

一日で作った割にはいい感じなのでは?

 

正直自分ではエロいかどうか全くわからないけど、とても良いと言っていただけているので良いのではないか。

 

それもこれもニコニ立体ちゃんのゆるい利用規約とパンツのおかげですね。

 パンツ専門ポーズ集 パンツが大好きだから、大至急パンツを描きたい!瞬撮アクションポーズ05 あおりモーション[女子高生編]ちょっとドキドキする女の子の仕草を描くイラストポーズ集