色々とハマっていたら、何を変更したか思い出せなくなって来た("・ω・゙)
結局、画面スクロールはやめた(ノ∀`)
取り敢えず今までのやり方で一応神経衰弱ゲームとしての機能は実装出来たのだけれども、実際に自分で何回か実機で試遊して思ったが、
神経衰弱と画面スクロールって、相性悪い_| ̄|○
スクロールするとそれが何行目で何列目かが判らなくなる(ノ∀`)
まあガイドみたいなのを表示すればいいんだろうけれども、そこまでするのもなんだなと。
ということで、World空間じゃなくてUI上にUI Image(GameObjectでもいいけども)を配置してスクロールしない一画面タイプにすることにした。この場合、解像度の違いによってカード間処理等を考慮しなくて済むような気がするし。
まあ画面スクロールは今後何かで必要になるかもしれないから、調査にかけた時間は無駄ではなかったと思いたい…(ヽ'ω`)
カードめくりはiTweenで
カード消失の前にカードめくりアニメーションを以下のページを参考に実装した。
【Unity Asset】iTweenがすごく便利だった
【Unity】iTweenの使い方 / お試し【入門】
上のエントリはiTween.RotateToの0.2の後のカンマがあることとcomplete()のgameobjectがgameObjectであることでエラーになった(´・ω・`)
実際のコード 裏側図柄のカードがタッチされた時に
iTween.RotateTo(this.gameObject, iTween.Hash( "y", 90, "time", 0.2f, "oncompletetarget", this.gameObject, "oncomplete", "CardOpenedAnim", "delay", 0.01f ));
という感じでアニメを開始し、
上記のアニメが終わったら、つまり裏側画像を持ったImageが90度になったら、表側画像をImageにセットし、0度へと戻すようにした。
void CardOpenedAnim() { this.gameObject.GetComponent<Image>().sprite = Resources.Load<Sprite>(filePathPrefix + FilePath); iTween.RotateTo(this.gameObject, iTween.Hash( "y", 0, "time", 0.2f, "oncompletetarget", this.gameObject, "delay", 0.01f )); }
今ひとつRotateの動きを理解していないが、何となくめくれてるように見えるのでいいかなぁ(・∀・)といういい加減な実装。後半部分の値を180度にするとカードの絵が鏡絵になってしまうし。fromを指定すればいいのか?
まあ、そもそも後半はアニメーションせずにそのまま表面を表示してしまってもいいのかもしれない。
途中、Editorで実行も出来るし、ビルド&ランも出来るのに、なぜかVS上ではiTweenに赤い波下線が出てCS0103エラーが表示される謎の現象が。後から作成したC#スクリプトファイル上では問題ないのに、元から有るファイル上でiTweenが見えないみたいな感じだった。
日本語コメントを削ったり、再起動しても解決しなかったので諦めて他のことをやった時だったか前のバージョンをチェックアウトしたら消えたけど、あれはなんだったんだろうか(´・ω・`)?