1 decade ago by peardox
This doesn't work on iOS and requires JQuery
I use this code on Blackberry Playbook and Nexus 7
The Nexus 7 needs the right and left control values reversed
The following is a big hack that overrides the built-in control system but makes for very intuitive play.
On the tested devices you can tilt the tablet left / right to move in that direction, touch anywhere on the screen to fire and flip the device away from you a little to jump.
It's extensible - you could easily use the Z-Axis as well or reverse the jump code for a 'down' command for example
A modification I'll be making shortly will allow different parts of the screen to do different things based on where the touch event takes place
The touchmove binding prevents scrolling of a webview if anyone's wondering
I use this code on Blackberry Playbook and Nexus 7
The Nexus 7 needs the right and left control values reversed
The following is a big hack that overrides the built-in control system but makes for very intuitive play.
On the tested devices you can tilt the tablet left / right to move in that direction, touch anywhere on the screen to fire and flip the device away from you a little to jump.
It's extensible - you could easily use the Z-Axis as well or reverse the jump code for a 'down' command for example
A modification I'll be making shortly will allow different parts of the screen to do different things based on where the touch event takes place
The touchmove binding prevents scrolling of a webview if anyone's wondering
var jumped = 0; var dbg = true; var orient = 1; var shoot = false; function handleDeviceOrientation(event) { if (window.orientation === undefined) { return false; } switch(window.orientation) { case 0: orient = 1; break; case 180: orient = -1; break; } } function handleDeviceMotion(event) { ax = event.accelerationIncludingGravity.x * orient; ay = event.accelerationIncludingGravity.y * orient; ig.input.clearPressed(); if(ax > 4) { // Right ig.input.actions.right = true; } else { ig.input.delayedKeyup.right = false; } if(ax < -4) { // Left ig.input.actions.left = true; } else { ig.input.delayedKeyup.left = false; } jumper = ay - jumped; if(jumper > 2) { // Jump ig.input.presses.jump = true; } if(shoot) { // Jump ig.input.presses.shoot = true; } jumped = ay; shoot = false; } function doShoot() { shoot = true; } $(document).bind('touchmove', function(e) { e.preventDefault(); window.scroll(0,0); return false; }); $(document).ready(function() { handleDeviceOrientation(); document.addEventListener("touchstart", doShoot, false); window.addEventListener("orientationchange", handleDeviceOrientation, true); if (window.DeviceMotionEvent || window.ondevicemotion) { //Check to see if the current application supports the devicemotion window.addEventListener("devicemotion", handleDeviceMotion, false); jumped = event.accelerationIncludingGravity.y; } });