ナイトリービルドを更新。
iPhone向けに少しだけまじめにバーチャルパッドを実装しました。もう一つ、デフォルトで遅延読み込みをするライブラリを整理して読み込みの高速化を図りました(ブロードバンド環境では関係ないですけどね)。

ソース:dq-virtualpad.js

バーチャルパッドですがtouchしたまま方向を検知するので、なんだか難しく考えていましたがアナログジョイスティックのデジタル変換の様な考えで単純にパッドの領域を9分割して、上下左右に二値化しました。
あと追加するのなら、逆にアナログジョイスティック機能やキーリピートのエミュレーション(連射モード)とかでしょうか。

 var me = this, dir,
    _make_dir = function (e) {
        var dir = 0;
        var dx = e.pageX - pX;
        var dy = e.pageY - pY;
        if (dx <= 35) {
            dir += 1;
        } else if (70 < dx) {
            dir += 2;
        }
        if (dy <= 35) {
            dir += 4;
        } else if (70 < dy) {
            dir += 8;
        }
        return dir;
    },
    touch_start = function (e) {
        $(tt).bind('mousemove', tt, touch_move);
        $(tt).one('mouseup', tt, touch_end);

        if (e.originalEvent.touches && e.originalEvent.touches.length) {
            e = e.originalEvent.touches[0];
        } else if (e.originalEvent.changedTouches && e.originalEvent.changedTouches.length) {
            e = e.originalEvent.changedTouches[0];
        }
        me.dir = _make_dir(e);
        me.onMousedown && me.onMousedown(me.dir, e);

        return false;
    },
    touch_move = function (e) {
        if (e.originalEvent.touches && e.originalEvent.touches.length) {
            e = e.originalEvent.touches[0];
        } else if (e.originalEvent.changedTouches && e.originalEvent.changedTouches.length) {
            e = e.originalEvent.changedTouches[0];
        }
        var back = me.dir;
        me.dir = _make_dir(e);
        if (back != me.dir) {
            me.onMousedown && me.onMousedown(me.dir, e);
        }
        return false;
    },
    touch_end = function (e) {
        $(tt).unbind('mousemove', touch_move);
        me.onMouseup && me.onMouseup(e);
        me.dir = DQ.DIR.NONE;
        return false;
    }

ナイトリービルドを更新。
RPG 習作
戦闘テスト

先日のデモに反映しました。まだ、ABボタンは機能していません。
shooting.html

M. K. の紹介

IT屋さんです。プログラミングが大好きで今はJavascriptがお気に入りです。
カテゴリー: dq, JavaScript, ゲーム作成   タグ: , ,   この投稿のパーマリンク