-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
-
-