Hatena::ブログ(Diary)

万年素人からGeekへの道 このページをアンテナに追加 RSSフィード Twitter

2014/8/19に移行した→ 万年素人からHackerへの道
 | 

2013-12-13 Friday

Unity Advent Calendar 2013

URL: http://qiita.com/advent-calendar/2013/unity

AIランキング機能をやろうと思いました。

しかし、AIはすぐに書けないので、需要ありそうなランキング機能にしますね。

Mac OS X前提です(^^)

参考ネタURL: Unifyの記事

http://wiki.unity3d.com/index.php?title=Server_Side_Highscores

ちょっとこの参考ネタURLランキング仕様の説明。

実際に動かしてないのでソース見た限り、

名前だけ、WWW.EscapeURL にして渡している。名前は何が入るかわからないのでエスケープさせているのだ。

また、ハッシュ化したのもパラメータで渡してマッチしてたらDBに挿入している。

キー適当に設定しているがきちんとしたのを入れよう。

こちらの記事にあるMD5Testのコードは使えないので、こちらのコードを使うようにしてください。

https://gist.github.com/shinriyo/7856337

元記事はPHPMySQLでつまらないので、Python 3.x系&MongoDBにします。

URLマッピングも欲しいので、Web側のフレームワークはBottleでやります。

PDOは「PHP Data Objects」の略で、どのDBを使っているか隠蔽してくれるものですが、これも使いません。

Bottleのインストールですが、

pip install bottle

で入ります。

今はPython 3を使うのが常識ですね。

Python 2を使うのは情弱か非ベンチャー的(ventureしない)な会社だけだと思います。

MongoDBインストール

brew install mongodb

でささっとインストールします。

MongoDBの初期設定

ln -s /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents/$ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist 

MongoDBの起動

mongo

だけ。


スコアの追加用のテストでまず書いてみる。

・add_score.py

中身はこちら

https://gist.github.com/shinriyo/7856207

・実行

python add_score.py 

・結果

Successfully inserted document: {'_id': ObjectId('52a45565150ecdb664683639'), 'score': '10', 'name': 'shinriyo'}

スコアの表示用のテストでまず書いてみる。

・display.py

中身はこちら

https://gist.github.com/shinriyo/7856219

・実行

python display.py

・結果

shinriyo
10
shinriyo
10
shinriyo
10

こんな感じになる。

できたら、こちらから

https://gist.github.com/shinriyo/7857151

こちらのC#をとってきて、

HSController.csで保存。

・GUITextを用意

f:id:shinriyo:20131208220528p:image

・先ほどの「HSController」をコンポーネントとして貼り付ける

f:id:shinriyo:20131208220526p:image

・結果

f:id:shinriyo:20131208220527p:image

・実際のスコア登録を行う処理はコチラ

score.py

https://gist.github.com/shinriyo/7857609

my_hash is 9386A8A972C08946C9BB1B05FC8972CA

real_hash is 9386a8a972c08946c9bb1b05fc8972ca

となるので、my_hashに対しては、lower()で小文字化する必要はありました。

URLには、Inspector上で

f:id:shinriyo:20131214175522p:image

Add Score URL

http://localhost:8080/score/add

Highscore URL

http://localhost:8080/score/display

を忘れないように

では、実際にUnityから登録をやってみる

・登録

f:id:shinriyo:20131208224036p:image

・結果

f:id:shinriyo:20131208224035p:image

追加されました!

では次の方!toru_inoueさんですね。

お手軽ダブルタップ Unity

URL: http://hiiro-game.seesaa.net/article/279869280.html

こちらのブログにあるコード改善したもの

foreach ( var touch in Input.touches )
{
    if ((touch.phase == TouchPhase.Began) && (touch.tapCount > 1))
    {
    }
}

しかし、これはAndroidやEditorでは動かない?

こんな感じで

変数宣言

    private bool isDoubleTapStart;
    private float doubleTapTime;

・実際のコード

    void Update ()
    {
        // double tap
        if (isDoubleTapStart)
        {
            doubleTapTime += Time.deltaTime;
            if (doubleTapTime < 0.3f)
            {
                if (Input.GetMouseButtonDown (0))
                {
                    Debug.Log ("double tap");
                    isDoubleTapStart = false;
                    doubleTapTime = 0.0f;
                }
            }
            else
            {
                Debug.Log ("reset");
                // reset
                isDoubleTapStart = false;
                doubleTapTime = 0.0f;
            }
        }
        else
        {
            if (Input.GetMouseButtonDown (0))
            {
                Debug.Log ("down");
                isDoubleTapStart = true;
            }
        }
    }
 |