나는 하향식 슈팅 게임을하고 있는데, 기본적으로 캐릭터는 화면 중앙에서 rect (Safe Zone) 내에서 시작됩니다. 캐릭터는 정적이 아니며 장면이 있습니다. 그는 안전 지대 안에서 걸어 다닐 수 있습니다. 캐릭터가이 구역 밖으로 나 오자마자, 스태틱 스위치가 켜집니다 ... 캐릭터는 고정되어 있으며 장면은 그 주위를 움직입니다.HTML5 Game - Walking Boundary Issue
유일한 문제는 안전 영역으로 다시 들어갈 수 없어 내 정적이 다시 전환 될 수 있다는 것입니다.
저는 영원히 구역 밖에서 갇혀 있습니다. 내가하고있는 일은 내 캐릭터의 위치가 특정 값 (rect)인지 '내'인지 여부를 확인하는 것입니다. 내 KeyControls가 캐릭터가 아닌 Map에 영향을 미칩니다.
그래서 이것은 (안전 지대) 검사 내 경계 :
//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뿐만 아니라 프로그래밍에 익숙하지 않은 것 같습니다. 나는 설명 할 나의 대답을 편집 할 것이다. –