OSDN Git Service

当たり判定のバグを力技で目立たなくした。
author西田 耀 <hikarupsp@users.sourceforge.jp>
Mon, 26 Aug 2013 17:16:58 +0000 (02:16 +0900)
committer西田 耀 <hikarupsp@users.sourceforge.jp>
Mon, 26 Aug 2013 17:16:58 +0000 (02:16 +0900)
一応きちんと動作するはず。

www/corelib/classes/HiddenBlockClass.js
www/corelib/classes/MainCharacterClass.js
www/corelib/classes/MovableStageObjectClass.js

index 37a4762..3ea7674 100644 (file)
@@ -14,7 +14,7 @@ var HiddenBlockClass = function(ownerStage, args)
        
        //このフラグで立っているビットがすべて立っていればブロック出現と判定する。
        this.collidingMask = CollideBottom;
-       this.collidingExcludeMask = 0;
+       this.collidingExcludeMask = CollideBody;
        this.lastCollidedTick = 0;
        this.collidedTickInterval = 10;
 }.extend(BlockClass, {
index 1baea5f..ca1ac8c 100644 (file)
@@ -9,7 +9,7 @@ var MainCharacterClass = function(stage, args){
        tick : function()
        {
                MainCharacterClass.base.prototype.tick.apply(this);
-               
+               //console.log(this.collidingDirection.toString(2));
                if((!mainManager.runningStageName || this.ownerStage.manager.userID == this.ownerUID) && this.origin.y > 1000){
                        this.ownerStage.manager.userManager.kill();
                }
index 1cc2448..cb9bf2d 100644 (file)
@@ -32,7 +32,7 @@ var MovableStageObjectClass = function(stage, args)
        },
        canMoveTo: function(x, y){
                //\82·\82×\82Ä\82Ì\83I\83u\83W\83F\83N\83g\82É\91Î\82µ\82Ä(x, y)\82É\82 \82é\82Æ\82«\82Ì\8e©\95ª\82Ì\8fÕ\93Ë\8fó\91Ô\82ð\92²\82×\82é\81B
-               var retv = false;
+               var retv = true;
                var d = this.ownerStage.stageObjectLinearList;
                for(var i = 0, i_max = d.length; i < i_max; i++){
                        var f = d[i];
@@ -57,7 +57,7 @@ var MovableStageObjectClass = function(stage, args)
                                                //\8fÕ\93Ë\90æf\82ª\8fÕ\93Ë\94»\92è\96³\8e\8b\82¾\82Á\82½\82ç\81A\8fÕ\93Ë\82Í\82µ\82È\82¢
                                        } else{
                                                //\8fÕ\93Ë\82µ\82½
-                                               retv = true;
+                                               retv = false;
                                                //break;
                                        }
                                }
@@ -75,47 +75,35 @@ var MovableStageObjectClass = function(stage, args)
                var ly = y - sy;
                //\88Ú\93®\8b\97\97£\82ð\82Ç\82¿\82ç\82©\88ê\8e²\82Å\82Í\82©\82é
                var ct = Math.max(Math.abs(lx), Math.abs(ly));
-               if(ct < 2){
-                       ct = 1
-                       var dx = lx;
-                       var dy = ly;
-               } else{
-                       //\82»\82ê\82ð\8aî\8f\80\82É\82µ\82½\88ê\92P\88Ê\93\96\82½\82è\82Ì\88Ú\93®\97Ê
-                       var dx = lx / ct;
-                       var dy = ly / ct;
-               }
                //\88Ú\93®\82µ\82È\82¢\8e²\82ª\82 \82é\82©\82Ç\82¤\82©\81i\8d\82\91¬\89»\81H\81j
-               var fx = (dx == 0);
-               var fy = (dy == 0);
+               var fx = (lx == 0);
+               var fy = (ly == 0);
                //\8eÀ\8dÛ\82É\88Ú\93®\82·\82é\90æ\82Ì\8dÀ\95W
                var ex = sx;
                var ey = sy;
+               //ct\82ð\8aî\8f\80\82É\82µ\82½\88ê\92P\88Ê\93\96\82½\82è\82Ì\88Ú\93®\97Ê
+               var dx = lx / ct;
+               var dy = ly / ct;
                //\92i\8d·\82ð\8fæ\82è\89z\82¦\82é\8cW\90\94
                var c = Math.abs(this.caterpillar * dx);
-               //
+
                if(!(fx && fy)){
                        for(var i = 0; i < ct; i++){
-                               if(!fx && this.canMoveTo(ex + dx, ey)){
+                               if(!fx && !this.canMoveTo(ex + dx, ey)){
                                        //caterpillar\82Ì\8d\82\82³\82ð\91«\82µ\82Ä\88Ú\93®\82Å\82«\82é\82©\8e\8e\82µ\82Ä\82Ý\82é
-                                       if(c != 0 && this.canMoveTo(ex + dx, ey - c)){
-                                               //\82»\82ê\82Å\82àx\8e²\82ª\8fÕ\93Ë\82µ\82½\82Ì\82Å\88Ú\93®\82ð\92â\8e~\82µ\83t\83\89\83O\82ð\83Z\83b\83g\82·\82é
-                                               if(i == 0 && this.canMoveTo(ex, ey)){
-                                                       //\91S\82­\90i\82ñ\82Å\82¢\82È\82¢\82Ì\82É\8fÕ\93Ë\82µ\82Ä\82¢\82½\82ç\81A\82»\82ê\82Í\82ß\82è\8d\9e\82ñ\82Å\82¢\82é\82Ì\82Å\96ß\82·
+                                       if(c != 0 && !this.canMoveTo(ex + dx, ey - c)){
+                                                       //\82»\82ê\82Å\82àx\8e²\82ª\8fÕ\93Ë\82µ\82½\82Ì\82Å\88Ú\93®\82ð\92â\8e~\82µ\83t\83\89\83O\82ð\83Z\83b\83g\82·\82é
+                                                       fx = true;
+                                                       this.movingSpeed.x = 0;
+                                                       //bug fix???
                                                        ex -= dx;
-                                               }
-                                               fx = true;
-                                               this.movingSpeed.x = 0;
                                        } else{
                                                //\8d\82\82³\82ð\95Ï\82¦\82ê\82Î\88Ú\93®\82Å\82«\82é\82Ì\82Å\8d\82\82³\82ð\95Ï\82¦\82Ä\8cp\91±\82·\82é
                                                ey -= c;
                                        }
                                }
-                               if(!fy && this.canMoveTo(ex, ey + dy)){
-                                       //y\8e²\82ª\8fÕ\93Ë\82µ\82½\82Ì\82Å\88Ú\93®\82ð\92â\8e~\82µ\83t\83\89\83O\82ð\83Z\83b\83g\82·\82é
-                                       if(i == 0 && this.canMoveTo(ex, ey)){
-                                               //\91S\82­\90i\82ñ\82Å\82¢\82È\82¢\82Ì\82É\8fÕ\93Ë\82µ\82Ä\82¢\82½\82ç\81A\82»\82ê\82Í\82ß\82è\8d\9e\82ñ\82Å\82¢\82é\82Ì\82Å\96ß\82·
-                                               ey -= dy;
-                                       }
+                               if(!fy && !this.canMoveTo(ex, ey + dy)){
+                                       //y\8e²\82ª\8fÕ\93Ë\82µ\82½\82Ì\82Å\88Ú\93®\82ð\92â\8e~\82µ\83t\83\89\83O\82ð\83Z\83b\83g\82·\82é\81B
                                        fy = true;
                                        this.movingSpeed.y = 0;
                                }
@@ -131,8 +119,12 @@ var MovableStageObjectClass = function(stage, args)
                        }
                }
                //\88Ú\93®
-               this.origin.x = ex;
-               this.origin.y = ey;
+               if(this.canMoveTo(ex, ey)){
+                       this.origin.x = ex;
+                       this.origin.y = ey;
+               } else{
+                       console.log("n");
+               }
                
                for(var i in this.collectedItems){
                        var item = this.collectedItems[i];