Game Research Creators' Blog!!

過去と未来を縦横無尽に飛び回る。


<< みしょみしょ動画制作 | main | 【AEn】ゲームエディター開発中 >>
スポンサーサイト

一定期間更新がないため広告を表示しています

| スポンサードリンク | - | | - | - |
enchant.js mapの矩形当たり判定
超おひさしぶりです。hiryuhです。
最近、enchant.jsを触ってて、
enchant.jsのmapクラスに矩形の当たり判定がなかったので拡張してみました。
せっかく作ったんで、ブログで公開してみます。
↓をenchant.jsのmapクラスのhitTest関数の下にでも追加してください。
なお、コリジョンデータがある時の処理しか書いていません。
  
2012/03/24 修正:
- 矩形の最後から一つ前のマスが判定から飛ぶことがある不具合を修正しました。

/*
x : X座標
y : Y座標
sx : サイズX
sy : サイズY
*/
    hitTest2: function(x, y, sx, sy) {
        var x2 = x + sx;
        var y2 = y + sy;
        if ( x < 0 || this.width <= x || y < 0 || this.height <= y ||
             x2 < 0 || this.width <= x2 || y2 < 0 || this.height <= y2 ) {
            return false;
        }
        var width = this._image.width;
        var height = this._image.height;
        var tileWidth = this._tileWidth || width;
        var tileHeight = this._tileHeight || height;
       
        var gx = x / tileWidth | 0;
        var gy = y / tileHeight | 0;
        var gx2 = x2 / tileWidth | 0;
        var gy2 = y2 / tileHeight | 0;
        
        var nx = gx2 - gx;
        var ny = gy2 - gy;
       
        if (this.collisionData != null) {
          // 全ブロック判定
          for( var i=0; i<=ny; i++ ) {
            var gy3 = gy + i;
           
            for( var j=0; j<=nx; j++ ) {
              var gx3 = gx + j;
              if( this.collisionData[gy3] && !!this.collisionData[gy3][gx3] ) {
                return true;
              }
            }
          }
         
          return false;
         
        } else {
          // コリジョンデータがあるものだけに対応
          console.log("collisionData is null");
          /*
            for (var i = 0, len = this._data.length; i < len; i++) {
                var data = this._data[i];
                var n;
                if (data[y] != null && (n = data[y][x]) != null &&
                    0 <= n && n < (width / tileWidth | 0) * (height / tileHeight | 0)) {
                    return true;
                }
            }
          */
          return false;
        }
    },
| hiryuh | 制作日誌 | 23:27 | comments(0) | trackbacks(0) |
スポンサーサイト
| スポンサードリンク | - | 23:27 | - | - |









http://grc.jugem.jp/trackback/73


+ CALENDAR
Sun Mon Tue Wed Thu Fri Sat
 123456
78910111213
14151617181920
21222324252627
28293031   
<< October 2018 >>
+ RECOMMEND
+ RECOMMEND
+ SELECTED ENTRIES
+ RECENT COMMENTS
+ RECENT TRACKBACK
+ CATEGORIES
+ ARCHIVES
+ sponsor

ナウでヤングなレンタルサーバー!ロリポップ!
+ MOBILE
qrcode
+ LINKS
+ PROFILE
+ OTHERS