비디오: Getting your Game on the Big Screen 2024
스프라이트가 움직이기 시작하면 항상 화면의 경계를 벗어날 가능성이 있습니다. 일반적으로 HTML5 게임 개발자는 랩, 바운스, 중지, 죽기 또는 계속 등 다섯 가지 방법 중 하나로 응답합니다. simpleGame 라이브러리에는 사용할 기본 동작을 지정할 수있는 경계 확인 루틴이 있습니다. 스프라이트의 boundAction 속성은 사용할 액션을 나타냅니다. 경계 체커를 사용하여 다음을 수행 할 수 있습니다.
-
테두리를 결정하십시오.
테두리는 캔버스 너비에 의해 결정됩니다.
-
사용자가 국경을 벗어 났는지 확인하십시오.
그런 다음 스프라이트가 테두리 중 하나에서 벗어 났는지 여부를 나타내는 부울 값인 offRight, offLeft, offTop 및 offBottom을 포함하는 다른 일련의 변수가 만들어졌습니다. 기본 if 문을 사용하여 스프라이트가 이러한 방법 중 하나에서 화면을 벗어 났는지 확인하십시오.
-
경계 동작을 결정합니다.
간단한 if 문을 사용하여 스프라이트에 현재 설정된 경계 동작을 확인합니다.
-
boundAction이 WRAP 인 경우:
x 또는 y 변수를 반대쪽으로 변경하지만 dx 및 dy 값은 그대로 두십시오.
-
boundAction이 BOUNCE 인 경우:
스프라이트가 위 또는 아래로 튀어 오면 dy를 반전시키고, 스프라이트가 왼쪽이나 오른쪽으로 튀면 dx를 반전합니다. x 또는 y를 직접 변경할 필요는 없습니다.
-
boundAction 가 STOP 인 경우: 종료 된 경계에 관계없이 속도를 0으로 설정하기 만하면됩니다.
boundAction
-
가 DIE 인 경우: 속도를 0으로 설정하고 스프라이트의 hide () 메소드를 호출합니다. 이렇게하면 스프라이트가 사라지고 충돌 계산에서 더 이상 고려되지 않습니다. 다른 모든 boundAction은 CONTINUE로 간주됩니다.
스프라이트는 보이지 않더라도 계속 움직이기 때문에 여기서는 아무런 조치가 필요 없습니다. 이것이 원하는 효과라면, 어떻게 든 스프라이트가있는 곳을 사용자에게 알려주거나, 스프라이트가 돌아올 어떤 방법을 제공해야합니다.
-
충돌 검사 루틴을위한 코드의 일부입니다:
offRight = false; offLeft = 거짓; offTop = false; offBottom = false; if (this.x> rightBorder) {offRight = true;} if (this.boundAction == WRAP) if (this.y <0) {offTop = true;} if (this.x bottomBorder) {offBottom = {if (offRight) {this. x = leftBorder;} // if if if (offBottom) {this. y = topBorder;} // if if if (offLeft) {this. x = rightBorder;} // if if if (offTop) {this. y = bottomBorder;}} else if (this. boundAction == BOUNCE) {if (offTop || offBottom) {this.dy * = -1; 이. calcSpeedAngle (); 이. imgAngle = this. moveAngle;} if (offLeft || offRight) {this. dx * = -1; 이. calcSpeedAngle (); 이. imgAngle = this. } if (this.boundAction == STOP) {if (offLeft || offRight || offTop || offBottom) {this. else if (this.boundAction == DIE) {if (offLeft || offRight || offTop || offBottom) {this. 숨는 장소(); 이. else {// 영원히 계속}} // checkbounds 끝내기
simpleGame에서 스프라이트의 경계 동작을 변경하려면 setBoundAction () 메서드를 사용하면됩니다.
약간의 상황에서는 다른 행동이 필요할 수 있음에 유의하십시오. 예를 들어 측면을 감싸고 위쪽이나 아래쪽으로 멈추고 싶을 수 있습니다. 좀 더 구체적인 동작이 필요하면 스프라이트에 대해 새로운 checkBounds () 메서드를 작성하기 만하면됩니다. 그러나 새로운 checkBounds ()가 simpleGame에 내장 된 checkBounds ()를 완전히 덮어 쓰기 때문에 모든 경계를 검사해야합니다.