Grow(仮)2014/09/18進捗報告(1)
そろそろ大学が始まる時期ですね。
前回「NightBat」のリリースを行ったのですが、一息つく暇もなく次のアプリを作ることになりました。
これから年末にかけて育成ゲーム「Grow(仮)」を制作していきます。今年中に終わるかな。
進捗報告
・とりあえず次のゲーム案を話し合いました。雀荘さんが色々と案を出してくれました。具体的なゲーム像が見えるというのはいいですね(他人事)。話し合いの結果、次のようになりました。
「植物モンスターを育成して戦闘とか色々するゲームにしよう」
...もう少しシナリオとか戦闘の詳細とか放置ゲーとか色々話したんですが、とりあえずメイン画面っぽいのを作ってみる事にしました。
・メイン画面っぽいの作りました。
育成ってどんな感じなんだ?っていう事でとりあえず「冒険」「遊ぶ」「えさ」「設定」みたいなアイコンを表示してみました。
「メニューは隠せるようにしよう」という案があったので、右下の黄緑の部分をタップするとメニューが引っ込むようになりました。もう一度押すと出てきます。
・タッチ処理を共通化するため、タッチを検出するための関数を作りました。
前回ではGUIのButtonを頑張って用いて大変だったので、今回は別の方法をとります。
タップの検出に関して、こちらのサイトを参考にしました。
Unity2d クリック(タップ) されたオブジェクトを特定するやり方 - Qiita
コードを大部分利用しつつ、少しだけ修正します。
public static string tapHit(){ if(Input.GetMouseButtonDown(0)){ Vector2 tapPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition); Collider2D collition2d= Physics2D.OverlapPoint(tapPoint); if(collition2d){ RaycastHit2D hitObject = Physics2D.Raycast (tapPoint,-Vector2.up); if(hitObject){ return hitObject.collider.gameObject.name; } } } return "none"; }
ゲームオブジェクトの名前を返すtapHit関数にして、public、staticを追加しました。
static関数はあまりよろしくないのですが、現状これでやっていきます。この関数をMyTouch.csなどに置いておけば、
if(MyTouch.tapHit() == "MenuSwitchButton"){ ... }
このようにスクリプトの至る所に書けるので使い勝手はよさそうです。
ただ至る所に書いた後に修正でもしたら大惨事な予感がするので要検討したいところ。
そもそもRaycastの仕組みもよく分かっていないので理解したいところ。
そもそもこの名前で大丈夫なのかも検討した方がいい気がする。