Impact

» Edit Game Info

2 years 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

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;
	} 
		
	});

2 years ago by Jerczu

Jquery on a mobile device is an overkill why not use jqmobi?
Page 1 of 1
« first « previous next › last »

Post Reply

Please login or register to reply.