비디오: Part3 Chapter13 01-1 가속도계 2024
기본적으로 HTML5 게임 가속도계는 완전히 수평 인 중립 위치를 취합니다. 즉, 장치가 테이블에 평평하게 놓여 있습니다. 그러나 이들은 모바일 장치이며, 게이머는 종종 중립적 인 위치를 다른 곳으로 가져 가고 싶어합니다.
기울기 조절을 교정하기위한 기본 기술은 AX 및 AY에 대한 오프셋 값을 추적하는 것입니다. 사용자가 재 교정을 선택하면 오프셋 값이 변경되어 새로운 중립 위치가됩니다. 관련 코드는 다음과 같습니다.
가속. html var 게임; var 공; var accel; var btnCalibrate; var offsetAX = 0; var offsetAY = 0; function init () {game = new Scene (); ball = 새로운 Sprite (게임, "redBall.png", 50, 50); accel = new Accel (); btnCalibrate = 새로운 GameButton ("보정"); btnCalibrate. setSize (100, 100); btnCalibrate. setPosition (100, 100); 경기. function () if (btnCalibrate. isClicked ()) { offsetAY = accel입니다. getAY (); offsetAX = accel. getAX (); } } function update () {게임. 명확한(); checkButton (); newDX = accel. getAY () - offsetAY; newDY = accel. getAX () - offsetAX; newDX * = -5; newDY * = -5; 공. setDX (newDX); 공. setDY (newDY); 공. update ();} 어떻게 든 교정을 트리거해야합니다. 이 예에서는 기본 보정 버튼을 추가합니다. 작동 원리는 다음과 같습니다.
offsetAX 및 offsetAY 변수를 추가합니다.
이 두 변수는 기기의 중립 위치가 표준 태블릿 태도와 얼마나 다른지 나타냅니다. 값 0에서 변수를 시작하십시오.-
보정 버튼을 추가하십시오.
이 예에서 사용자는 버튼을 클릭하여 다시 보정 할 수 있습니다.
-
버튼 누름을 확인합니다.
버튼 누름을 읽는 함수가 생성되었습니다.
-
버튼을 누르면 새로운 오프셋 값을 얻습니다.
버튼이 활성화되면 Acc 객체에 요청하여 현재 AX 및 AY 값을 찾습니다. -
모든 프레임에서 ax와 ay에서 오프셋을 뺍니다.
다른 계산을하기 전에 AX에서 offsetAX를 빼고 AY에서 offsetAY를 뺍니다. 이렇게하면 버튼을 마지막으로 눌렀을 때 장치가 설정되었지만 새로운 중립 위치가 설정됩니다.
-
보정 버튼은 매우 쉽게 구현할 수 있지만 때때로 보정이 자동으로 수행됩니다. 원하는 경우 init () 함수에서 offsetAX와 offsetAY를 결정하면 init () 함수가 실행되는 동안 장치의 자세가 기본 태도가됩니다. 이것은 사용자가 보정을 재설정하는 것을 허용하지 않지만 거의 사용되지 않는 버튼으로 화면이 어수선하게 흩어지는 것을 방지합니다.