カテゴリー: Unity

うにのトゲは刺さると痛い(´・ω・`)-7

なんか色々やってたら、何やったか忘れてしまった(´・ω・`)

  • 取り敢えずiTweenをやめて、DTweenを導入した。
  • ヒットしなかった場合のカードの戻りを追加した。
  • ヒットした場合の雑な消滅アニメを追加した。
  • 24枚、36枚、48枚のパターンを作った。
  • 雑なタイトル画面を作った。
  • admobを追加した。
  • Backボタンによるアプリケーションの終了を追加した。
  • Dialogをどうにかしようとしている

くらいかな?

24枚、36枚、48枚でカードサイズを変えた結果、48枚パターン以外では拡大表示が入らなくなったり、配布カードの上にかぶることが判明。まあ24枚と36枚のパターンだとカードの値が見えにくいということもないので、拡大表示しなきゃいいかなぁという結論に。

参考:
DOTween関連
[Unity]DOTweenめーも

[Unity]インスタンス生成時に引数を渡したい

Unity : モバイル画面の方向を固定、あるいは変化を検出

[Unity] AdMob 広告をAndroidに実装する
Android Admobで使うデバイスIDの取得方法(Unity)


ぐるぐる回転

画像を裏返すようなアニメーション
このコードを理解せずに適当に延々と回転し続けるアニメーションを作ろうとしてハマる(ヽ’ω`) 最初の絵が二周目から反転してしまう… そもそも仕組みもこのコードの挙動も理解していないので原因が分からず、最終的に”89″と”-89″にすると反転が起こらず、かつ人間の目には90を指定した時との差はわからない感じだったので、それで良しとした(ノ∀`)


カード裏面

何となくカード裏面も変更出来たらいいのかしらと思いつつ、絵を描くと何故か謎のクリーチャーをこの世に爆誕させてしまう俺氏の才能が怖いので、フラクタルみたいな図柄を自動生成してくれるソフトを探す。最初はApophysis.7X16というソフトを使ってみたのだけれども、あんまり使い方が判らず(´・ω・`)

その後、juxのフリー版を落として来て、色々と触ってたら、そこそこそれっぽい画像が出来たので適当に加工してカードにはめてみた。なんか神々しいというかRPGのラストとかに出て来そうな感じの画像が結構出来たw 原理等は全くわからないけど凄いと思いました(・∀・)(小並感)

でもトランプの裏面って左右対称上下対称が普通だったんだっけか。まあただの神経衰弱ゲームなので細かいことはキニシナイ(・3・) あ、一番最後のはApophysis.7X16で出力した画像を加工したんだっけかな。

ちなみにこの作業で半日以上を潰した(ノ∀`)
理屈が解らないので適当に数値を替えてやっているのはあたかもひたすらガチャを引き続ける人のようであった…


まだまだやることが山程あるな…(ヽ’ω`)

うにのトゲは刺さると痛い(´・ω・`)-6

色々とハマっていたら、何を変更したか思い出せなくなって来た(“・ω・゙)

結局、画面スクロールはやめた(ノ∀`)

取り敢えず今までのやり方で一応神経衰弱ゲームとしての機能は実装出来たのだけれども、実際に自分で何回か実機で試遊して思ったが、

 

 

 

神経衰弱と画面スクロールって、相性悪い_| ̄|○

スクロールするとそれが何行目で何列目かが判らなくなる(ノ∀`)
まあガイドみたいなのを表示すればいいんだろうけれども、そこまでするのもなんだなと。

ということで、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が見えないみたいな感じだった。

日本語コメントを削ったり、再起動しても解決しなかったので諦めて他のことをやった時だったか前のバージョンをチェックアウトしたら消えたけど、あれはなんだったんだろうか(´・ω・`)?

うにのトゲは刺さると痛い(´・ω・`)-5

だらだらしていたら、もう一週間くらい経っていた(´・ω・`)

ようやくGitを使い始める

Unity を Git でバージョン管理する等を参考にGitでバージョン管理をするようにした。というほどのことでもないが。SourceTreeってAtlassianが作ってるGitクライアントなのか。
でもローカルリポジトリだけなので、そのうちVPSサーバの方にクローンしないといけない。
その前にサーバの維持費用捻出出来るかしら(´・ω・`)


あとは特に調べたというほどのこともなく、適当実装しただけ(´・ω・`)

取り敢えず、無料素材のトランプ画像を組み込む(´・ω・`)ワンクリックボキンシタデ

今ひとつUnityでのプラグラミング方法が分からず悩む(´・ω・`)
結局、各カードオブジェクトにくっつけているCardManager.cs内に選択されたカード(一枚目、二枚目)への参照を保持するクラス変数を作って、update内でチェックする形にした。二つとも格納されたら、表示時間を設定して、毎update()毎にTime.deltaTimeで減算していって、0以下になったらジャッジして、マッチならオブジェクトをDestroyし、マッチ/アンマッチ関わらず表示部をクリアするようにした。

 

マッチした時は、何らかのアニメーションを入れるべきか否か。
でもそこら辺は苦手なのでパーティクル?とかでごまかそうかな。
ようやく神経衰弱の骨格部分は出来たので、もう少しゲームっぽい装飾をしよう。
そうしたら、本当に作りたかった部分を実装するかな。
まあしかし、トランプを使ってるからとは言え、カードセットは54枚じゃなくてもいいかなぁ。
後々のことを考えて24,36,48のセットを選択出来るようにすればいいか。

うにのトゲは刺さると痛い(´・ω・`)-4

画像の動的読み込み

このスクリプトをAddComponentしているGameObjectのSpriteRendererの画像を動的に「Assets\Resources\images\card_ura.png」に変更するには

this.gameObject.GetComponent<SpriteRenderer>().sprite = Resources.Load<Sprite>("images/card_ura");

と書くらしい。指定すべきフォルダパスは「Assets\Resources\」からの相対パスで良いらしい。

Resources.Load


エディタでは動くのに実機では動かないヽ(`Д´)ノ

トランプの神経衰弱ゲームを作るだけなら必要はないのであるが、後々のことを考えてsqliteを使うようにしてみた。

参考:
UnityでSQLiteを扱う方法
UnityにSQLiteを導入する

取り敢えずは動いていたので、それ以外の調査等々をし、GameObject上に直接テキストを描画するのは難しそうだと分かりがっかりする(´・ω・`)

でまぁ、しばらく、というほどでもないが半日くらい実機で確認してなかったので、久しぶりに実機で実行させてみた…

 

 

 

なんかおかしい…( ;・´ω・`)ゴクリッ

エラーとかは出てないのだけれども、カードのプレハブがインスタンス化されていない…

色々と調べた結果、 SqliteDatabaseクラスのExecuteQuery()を投げる前までは動いていて、この行以降の処理がされていない(´・ω・`)

なんやかんやぐぐったり数時間かけて判明した…_| ̄|○
なんかプラットフォームでの切り替え設定をしないといけないみたい。少なからずうちの環境ではそうだった…

うちはx86_64用のsqlite3.dllとAndroid用のlibsqlite3.soだけ入れて、前者をEditorとStandaloneにして後者をAndroidだけにした。
参考:
Windows64bit&Unity5(64bit)でSQLite。

他のページ等ではこの説明がないんだよなぁ…もしかして皆エディタ上で動いて「わーいヽ( ・∀・)ノ」ってなってAndroidの実機で試してないとか( ・´ω・`)? あるいはうちの環境が特殊なのか、俺氏が何か手順をし忘れているとか…?

まあなんにせよ解決して良かった(ヽ’ω`)


もう一週間以上も時間かけてるのに、ここまでしか進んでいない(´・ω・`)
単純な神経衰弱を作るならもっと簡単に適当に出来るんだろうけれども、寄り道が多すぎる(ノ∀`)

しかしテキストやら任意の画像の描画が簡単に出来ないのはきついなぁ(´・ω・`)ドウシヨウカナ