ぼくの息抜き

ぼくの息抜き

気ままな二人が記事を書くことで息抜きしていくブログ

CSS MenuMaker

unityゲームプログラミング 雨を降らすゲームを作るPart2 -スライド実装-

f:id:bokunoikinuki:20180621201305p:plain

数日前に食事関連でパフォーマンスが一時的にガクッと落ちてプログラミング停滞するかと思っていたが、原因がわかり元のハイパフォーマンス状態に戻った。

サクサク雨降らすゲームを作って行く。

UIどうするか

f:id:bokunoikinuki:20180624134028p:plain

下のところをタップすると引き出てくるアップグレード画面を作る。

以前SimaGameで作ったが、いまいち身についていない。

整理しながら作る。

前回SimaGameを見直すとiTweenを使ってこれだけで作っていた。

void NextStageBack() {
	if (SSBPf.GetComponent<iTween> () == null) {
		iTween.MoveBy (SSBPf, iTween.Hash ("x", -8.0f, "time", 1, "easyType", "easeInCirc"));
	}
}

void PrevStageBack() {
	if (SSBPf.GetComponent<iTween> () == null) {
		iTween.MoveBy (SSBPf, iTween.Hash ("x", 8.0f, "time", 1, "easyType", "easeInCirc"));
	}
}

これだけだと延々に一方方向にスライドできちゃう気がする。

ので、

void NextStageBack() {
	if (SSBPf.GetComponent<iTween> () == null && slideCount > nowSlideNo) {
		iTween.MoveBy (SSBPf, iTween.Hash ("x", -8.0f, "time", 1, "easyType", "easeInCirc"));
		nowSlideNo ++;
	}
}

void PrevStageBack() {
	if (SSBPf.GetComponent<iTween> () == null && nowSlideNo >= 2) {
		iTween.MoveBy (SSBPf, iTween.Hash ("x", 8.0f, "time", 1, "easyType", "easeInCirc"));
		nowSlideNo --;
	}
}

直しておいた。

他にもいくつかこのスライドには問題がある。が、別の時に考える。

iTween使わずにスライドさせる

やり方は思い浮かぶけど、乗り気にならない場合は大抵どうやっていいかわからない時。こういう時は問題を分割すると簡単になる。

一枚の絵を特定の部分タップで上がったり下がったりさせる。iTweenを使うならlocalPositionで直接使えないので、理想着地点のlocalPosition⇨worldPositionに変えてからiTweenに関数を使う必要がある。実際これでできるかもわからない、から試す。

その前にGoogle先生に聞く。

iTweenはworldPositionで指定しないといけないかのか

以前試行錯誤した時は全然理想次元を超えてどこかにいってしまう現象があったので、そのままlocalPositionが使えないのは把握済み。

Google先生すげええええ。前の自分無能!

一瞬で答え出てきた。

参考記事:

【Unity】iTweenのGlobal座標、Local座標について - ハルシオンシステムの気ままBlog

 

"isLocal",trueを入れるだけでできるようだ。Local入れられれば何も怖いことなし。

ということで、手順を明確にしてからコーディングをする。

手順をまとめる

  1. iTweenをインポートする
  2. UpgradeBackをPrefab化させる
  3. Prefab Instatiate
  4. Prefabを移動させるiTweenの関数作る
  5. UpgradeBack上のArrowImageのButtonと関数を紐付ける
  6. 動作確認
  7. 完成

あとArrowImageの向きを上下で逆さにするのも加えよう。

なんかこの辺毎回面倒に感じるからもっと手軽にできるといいんだけどな、

何が面倒なのかまとめてみよう。

  • Prefabを使うのに毎回Resources.Load⇨Instantiate⇨ボタンあったらonClick.AddListener使わないといけないのがめんどい。
  • Inspector使えば少し楽になるのはわかるが、なんとなくpublicでドロップを避けている
    ⇨あとで変更するときめちゃくちゃ楽だろうと思っているから
     ⇨実際publicで苦労した経験はない気がする

iTweenはまじで便利すぎる。