我正在製作一個自頂向下的射手,基本上角色始於屏幕中間,矩形內(安全區域)。角色不是靜態的,場景是。他可以在安全區內走動。一旦角色走出這個區域,靜態畫面就會切換......角色是靜態的,場景正在他身邊移動。HTML5遊戲 - 散步邊界問題
唯一的問題是,我不能走回安全區域,讓我的靜力學再次切換。
所以我永遠卡在區外。我所做的只是檢查我的角色位置是否在某個值內(這是正確的),如果他不在,那麼我的KeyControls會影響地圖而不是角色。
所以這是我的邊界(安全區)檢查:
//Walking Window Boundaries
var boundarySizeX = 400;
var boundarySizeY = 200;
ctxWalkBoundary.fillStyle = "grey";
ctxWalkBoundary.fillRect(gameWidth/2 - boundarySizeX/2, gameHeight/2 - boundarySizeY/2, boundarySizeX, boundarySizeY);
ctxWalkBoundary.clearRect((gameWidth/2 - boundarySizeX/2) + 2, (gameHeight/2 - boundarySizeY/2) + 2, (boundarySizeX) - 4, (boundarySizeY) -4);
var paddingLeft = (gameWidth - boundarySizeX)/2;
var paddingRight = gameWidth - ((gameWidth - boundarySizeX)/2) - this.charWidth;
var paddingTop = (gameHeight - boundarySizeY)/2;
var paddingBottom = gameHeight - ((gameHeight - boundarySizeY)/2) - this.charHeight;
var paddingY = (gameHeight - boundarySizeY)/2;
if(this.drawX > paddingLeft && this.drawX < paddingRight && this.drawY > paddingTop && this.drawY < paddingBottom){
inBoundary = true;
}
else{
inBoundary = false;
console.debug("Out Of Boundary!");
}
這是我KeyChecker:
//UP
if(this.isUpKey){
//Character movement
if(inBoundary){
this.drawX = this.drawX + this.speed * Math.cos((this.characterRotation));
this.drawY = this.drawY + this.speed * Math.sin((this.characterRotation));
}
else{
mapPositionX = mapPositionX - this.speed * Math.cos((this.characterRotation));
mapPositionY = mapPositionY - this.speed * Math.sin((this.characterRotation));
}
我的性格始終面臨着我的鼠標(旋轉)。所以每次用戶按下W或Up時,角色將始終走向鼠標位置。
任何想法,我可以回到該區域?
----- -----更新
我想我需要以某種方式檢查,如果我還在安全區朝外 - 如果不是,那麼反向他靜。
我很新的HTML5/JS - 我喜歡這個想法將它分開。但是,你能否進一步解釋一下,'object.x/y'是什麼?我如何獲得所有這些變量?謝謝 –
好吧,看起來你是編程的新手,而不僅僅是HTML5。我會編輯我的答案來解釋。 –