OSDN Git Service

当たり判定の修正と敵キャラクターを踏んでダメージを与える動作の実装
[h58pcdgame/GameScriptCoreLibrary.git] / www / corelib / classes / MovableStageObjectClass.js
index 0ab3a89..19cdd49 100644 (file)
@@ -1,75 +1,64 @@
-var MovableStageObjectClass = function(stage)
+var MovableStageObjectClass = function(stage, args)
 {
-       MovableStageObjectClass.base.apply(this, [stage]);
+       MovableStageObjectClass.base.apply(this, arguments);
 
        this.movingSpeed = new Point2D(0, 0);
        //2 * hysteresis >= movingFriction\82Å\82 \82é\82±\82Æ\82ð\90\84\8f§\82·\82é\81B
        //\82»\82¤\82Å\82È\82¢\8fê\8d\87\81A\96\80\8eC\82Å\82Ì\8c¸\91¬\8cã\82É\8a®\91S\82É\92â\8e~\82Å\82«\82È\82¢\89Â\94\\90«\82ª\82 \82é\81B
-       this.movingFriction = 8000;
-       this.hysteresis = this.movingFriction / 50;
-       this.xMaxSpeed = 5;
-       this.yMaxSpeed = 5;
+       this.movingFriction = 1000;
+       this.hysteresis = this.movingFriction/ 60;
+       // \8c»\8dÝ\82±\82Ì\83I\83u\83W\83F\83N\83g\82ª\90Ý\92u\82µ\82Ä\82¢\82é\82©\82ð\8am\94F\82·\82é\82É\82Í ( (instance) .collideFlag & 4) != 0 \82Æ\82·\82é
+       // \8fd\97Í\82ª\82È\82­\82È\82Á\82½\82ç\82±\82Ì\95û\96@\82Å\82Í\90Ú\92n\82ð\8c\9f\8fo\82Å\82«\82È\82­\82È\82é\82ª\82»\82ê\82Í
+       this.collideFlag = 0;
+       // \82±\82Ì\95¨\91Ì\82É\93­\82­\8fd\97Í(\95¨\91Ì\95Ê\82É\82»\82ê\82¼\82ê\8ew\92è\89Â\81A\83}\83C\83i\83X\92l\8ew\92è\89Â)
+       this.gravity = 800;
+       //\93\96\82½\82è\94»\92è\82Ì\83}\81[\83W\83\93\82Ì\8ew\92è
+       this.collisionMarginTop = 2;
+       this.collisionMarginLeft = 6;
+       this.collisionMarginRight = 6;
+       this.collisionMarginBottom = 2;
+       
+       //\92i\8d·\82â\8dâ\82ð\8fæ\82è\89z\82¦\82ç\82ê\82é\83\8c\83x\83\8b 0\82¾\82Æ\8dâ\82ð\91S\82­\8fã\82ê\82È\82¢
+       this.caterpillar = 2.5;
        
 }.extend(StageObject, {
+       className: "MovableStageObjectClass",
        tick: function(){
-               if(this.movingSpeedX > this.xMaxSpeed) this.movingSpeedX = this.xMaxSpeed;
-               if(this.movingSpeedY > this.yMaxSpeed) this.movingSpeedY = this.yMaxSpeed;
-               if(this.movingSpeedX < -this.xMaxSpeed) this.movingSpeedX = -this.xMaxSpeed;
-               if(this.movingSpeedY < -this.yMaxSpeed) this.movingSpeedY = -this.yMaxSpeed;
-               
                //\92ï\8dR\8f\88\97\9d
                if(this.movingSpeed.x < -this.hysteresis){
-                       this.movingSpeed.x += this.movingFriction / this.stage.manager.tickPerSecond;
+                       this.movingSpeed.x += this.movingFriction / this.ownerStage.manager.tickPerSecond;
                } else if(this.movingSpeed.x > this.hysteresis){
-                       this.movingSpeed.x -= this.movingFriction / this.stage.manager.tickPerSecond;
+                       this.movingSpeed.x -= this.movingFriction / this.ownerStage.manager.tickPerSecond;
                } else{
                        this.movingSpeed.x = 0;
                }
-               if(this.movingSpeed.y < -this.hysteresis){
-                       this.movingSpeed.y += this.movingFriction / this.stage.manager.tickPerSecond;
-               } else if(this.movingSpeed.y > this.hysteresis){
-                       this.movingSpeed.y -= this.movingFriction / this.stage.manager.tickPerSecond;
-               } else{
-                       this.movingSpeed.y = 0;
-               }
                
-               //\89^\93®\8f\88\97\9d
-               this.moveTo(
-                       this.origin.x + (this.movingSpeed.x / this.stage.manager.tickPerSecond),
-                       this.origin.y + (this.movingSpeed.y / this.stage.manager.tickPerSecond)
+               //\8fd\97Í
+               this.movingSpeed.y += this.gravity / this.ownerStage.manager.tickPerSecond;
+
+               //\89^\93®\8f\88\97\9d (collideFlag\82Í\8fÕ\93Ë\82µ\82½\8dÛ\81A\82»\82Ì\95û\8cü(\95¡\90\94\89Â)\82ð\8e¦\82·\83t\83\89\83O\82Å\82 \82é\81BOperatedCharacterClass\82Å\83W\83\83\83\93\83v\94­\93®\8e\9e\82Ì\90Ú\92n\8am\94F\82È\82Ç\82É\8eg\82í\82ê\82é)
+               this.collideFlag = this.moveTo(
+                       this.origin.x + (this.movingSpeed.x / this.ownerStage.manager.tickPerSecond),
+                       this.origin.y + (this.movingSpeed.y / this.ownerStage.manager.tickPerSecond)
                );
                
-               /*
-                       \82±\82ê\82Í\96{\97\88Stage\82ª\92S\93\96\82·\82é\82µ\82å\82è\81B
+               //\8fÕ\93Ë\8e\9e\82Ì\89^\93®\83G\83l\83\8b\83M\81[\8fÁ\96Å\90Ý\92è
+               if((this.collideFlag & 1) != 0 && this.movingSpeed.x > 0) this.movingSpeed.x = 0;       //\89E\95û\8cü\82É\8fÕ\93Ë
+               if((this.collideFlag & 2) != 0 && this.movingSpeed.x < 0) this.movingSpeed.x = 0;       //\8d\95û\8cü\82É\8fÕ\93Ë
+               if((this.collideFlag & 4) != 0 && this.movingSpeed.y > 0) this.movingSpeed.y = 0;       //\89º\95û\8cü\82É\8fÕ\93Ë
+               if((this.collideFlag & 8) != 0 && this.movingSpeed.y < 0) this.movingSpeed.y = 0;       //\8fã\95û\8cü\82É\8fÕ\93Ë
                
-               //\95Ç\96Ê\92µ\82Ë\95Ô\82è\8f\88\97\9d
-               if(this.origin.x < -this.frame.origin.x){
-                       //\8d\95Ç\96Ê
-                       this.origin.x = -this.frame.origin.x;
-                       this.movingSpeed.x = -this.movingSpeed.x;
-               } else if(this.origin.x > this.stage.mainCanvas.width - (this.frame.origin.x + this.frame.size.x)){
-                       //\89E\95Ç\96Ê
-                       this.origin.x = this.stage.mainCanvas.width - (this.frame.origin.x + this.frame.size.x);
-                       this.movingSpeed.x = -this.movingSpeed.x;
-               }
-               if(this.origin.y < -this.frame.origin.y){
-                       //\8fã\95Ç\96Ê
-                       this.origin.y = -this.frame.origin.y;
-                       this.movingSpeed.y = -this.movingSpeed.y;
-               } else if(this.origin.y > this.stage.mainCanvas.height - (this.frame.origin.y + this.frame.size.y)){
-                       //\89º\95Ç\96Ê
-                       this.origin.y = this.stage.mainCanvas.height - (this.frame.origin.y + this.frame.size.y);
-                       this.movingSpeed.y = -this.movingSpeed.y;
-               }
-               */
-
        },
        moveTo : function(x, y) {
                //\93\96\82½\82è\94»\92è\82Ì\8eÀ\91\95
-               this.stage.moveTo(this, x, y);
+               return this.ownerStage.moveTo(this, x, y);
+       },
+       isCollided : function(obj, x, y)
+       {
+               //MovableStageObject\82ª(x, y)\82Ì\82Æ\82«\91\8a\8eè\82Ìobj\82Æ\8fÕ\93Ë\82·\82é\82©\94»\92è
+               if(obj.judgeCollideRange){
+                       return obj.judgeCollideRange(x + this.collisionMarginLeft, y + this.collisionMarginTop, x + this.size.x - this.collisionMarginRight, y + this.size.y - this.collisionMarginBottom, this);
+               }
+               return false;
        }
 });
-
-//child : CharacterClass
-
-