Unityに触ってみる(3)【UniRx入門失敗】

前回は人と大地とタッチ判定を実装しました。

次はコンピュータのAIでも作ろうかといろいろ調べていたときUniRxなる言語拡張を発見しました

「なに?イベントの上位互換として使える?じゃあ今まで作った部分を書き直してみまるか!」

…という感じで手を出したはいいものの、かなり詰まってしまい途中からは元の設計プログラムに結構手を加える結果となりました…

 

UniRxってなに?

たぶん

qiita.com

これとか

qiita.com

これとかに肝心な部分はほとんど書いてあるんだと思います。

とりえず

・ストリームを作る

・ストリームにメッセージが流れるとSubscribeに登録してある関数が実行される

・ストリームの基本はSubject

・SubjectはOnNextでメッセージを送信できる

・OnCollisionAsObserbableとかでイベントをストリームにするとイベントが発生したときにメッセージが自動で送信される

・オペレータでメッセージを加工したりいろいろできる

これをいろいろこねこねするとイベントがいい感じで書けるらしいんですけど、タッチ返しを防止する方法がうまく思いつかず(Zipとか試したけど考えていた挙動にならない…)新しいPlayerStateクラスを作ることになりました

できたものはこちら

なんだか微妙な仕上がりですが、困るまではこれでよしとしましょう…

Unityに触ってみる(2)【人、鬼、大地】

前回(Unityに触ってみる(1)【githubにプロジェクトをpushする】 - 日記)のつづきです

 

前回のまとめと今回の作業

前回はとりあえずprojectを作ってgithubにpushしました

今回は

・バージョン命名のルール設定

・ブランチ構成の概ねの決定と試運転

・Terrainで床を作ってキャラをのせる

・キャラクターにタッチの概念を付与する

・初めてのmergeを行う

をします

 

バージョン命名のルール決定

今回のプロジェクトにおいて特に必要はないんですけがバージョンをつけてみようと思います。

なるべく定量的にバージョンの管理をしたかったのでメジャーバージョンにアーキテクチャ(意味は雰囲気で使っています)のバージョン、マイナーバージョンにそのアーキテクチャバージョンにおけるmasterブランチのmerge回数にしようと思いました。つまり

アーキテクチャバージョン.masterのmerge回数

という感じです。前回pushした段階ではver0.0です

 

ブランチの構成

とりあえず

www.backlog.jp

havelog.ayumusato.com

ここら辺を参考にして、当面はmasterブランチとdevelopブランチの二つで運用していくことにしました。featureブランチは追加する機能の粒度がいまいちつかめていないことと、プロジェクトがかなり小さいことから必要性を感じるまでは使わなくてもいいかなと判断しました。

 

Terrainで床を作ってキャラクターを乗せる

Unityのヒエラルキービューでcreate->Terrainで大地ができました(スクショでも取っておけばよかったですね)

UnityのツールバーからAssets->ImportPackage->CharactersでUnity標準のTPSキャラをインポートします。ついでにそのそばのCameraからカメラもインポートして紐づけします

 

キャラクターにタッチの概念を付与する

作ったキャラクターに対して「はいタッチー!お前鬼ー!」ってやつを実装します。

とりあえずPlayer.cs(キャラクターに付与するコンポーネント)とそれを管理するPlayerControllerを作ることにしました。

Playerは自分が鬼(タグでItを鬼とした)で相手が鬼じゃないとき(タグでPlayerとなっているとき)に衝突イベントが発生したらPlayerControllerのメソッドを読んで鬼状態を移してもらいます。

ちなみにタッチ返し防止のために(というかこれをしないとうまく状態が遷移しない)タッチしてから3秒間は状態遷移を起こしません。

できたものがこちらです

 

youtu.be

きちんとPlayerのタグが変化してますね(動画では見えないですがCOMPlayerもちゃんと変化しています)

初めてのmergeを行う

git merge develop/0.0

まぁこれだけなんですけどね。ちなみにこれでver0.1になりました。この後でバグ(デバッグ用のデータを残したままだった)を見つけたんですけどhotfixブランチを切ったりrevertしたりはしないことにしました。

 

感想

さすがにUnityは便利ですね。特に何もせずにそれっぽいものができました

Unityに触ってみる(1)【githubにプロジェクトをpushする】

ゲームを作りたいと子供のころに思っていたのでUnityで作ってみることにしました

とりあえず最初は昔学校の課題でやった鬼ごっこプログラムをUnityで再現してみます。

ちなみに私の現在の状況として

C#は初心者レベル

・ここら辺のチュートリアルはすでに終えている

github.com

developers.mobage.jp

といった感じです。せっかく個人でプロジェクトを進めるので、いままで使っていなかったgitやgithubを使ってみようと思います。

今回は何もないUnityプロジェクトをgithubにpushするところまでやります。

 

なにをgithubにpushするの?

とりあえずTagという名前でプロジェクトを始動しましたが、なにをgithubにpushすればいいのかわかりません。

いろいろ探し回った結果、こちらのサイトを参考にさせていただきまました。

naichilab.blogspot.jp

thinkit.co.jp

つまり

・.gitignore

・Assets

・ProjectSettings

githubにpushすればいいんだとおもいます(たぶん)

とりあえずTagのなかでgit initして.gitignoreをgithub(https://github.com/github/gitignore/blob/master/Unity.gitignore)からコピペします

出来上がった.gitignoreをcommitしてpushしてみました。

.gitignoreがどのタイミングで作用しているのかよくわかりませんでしたが、git statusをみると確かにAssets/とProjectSettings/がコミット待ちだよみたいなことを言われたのでほかのファイルは正常に無視されているようです。あとはのこったAssetsとProjectSettingsをpushして本日の作業は終了です。

 

 感想

初めてgitを使ったけど、フォルダを指定するだけでその中身もaddしてくれるとか知らなかっただけに結構便利なんじゃないかなって雰囲気は感じ取れました。