# Character fly away in platform game

**URL:** <https://forum.kirupa.com/t/character-fly-away-in-platform-game/300454>\
**Category:** Uncategorized\
**Created:** [November 21, 2009, 9:43am UTC](https://forum.kirupa.com/t/character-fly-away-in-platform-game/300454 "2009-11-21T09:43:55Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![ash\_at\_risk](https://avatars.discourse-cdn.com/v4/letter/a/2bfe46/32.png) [@ash\_at\_risk](https://forum.kirupa.com/u/ash_at_risk)\
**Post date:** [November 21, 2009, 9:43am UTC](https://forum.kirupa.com/t/character-fly-away-in-platform-game/300454/1 "2009-11-21T09:43:55Z")

</div>

hi guys,  
here i found a glitch, here is my code as it executes the character flies in decreasing y direction, & its motion along x-axis is jerky.

* * *

var t:int=0;  
var wal:Array;  
wal=new Array();  
var man:Object;  
var newAnimstate:String=“stand”;  
var gravity:Number=.0009;  
var lastTime:int;  
createman();  
stage.addEventListener(Event.ENTER\_FRAME,gameloop);  
function createman()  
{  
man=new Object();  
man.mc=rect.man;  
man.dx=0.0;  
man.dy=0.0;  
man.jump=false;  
man.inAir=false;  
man.jumpspeed=.8;  
man.walkspeed=.6;  
man.animstate=“stand”;  
man.direction=1;  
man.moveRight=false;  
man.moveLeft=false;  
man.walkAnimation = new Array(0,1,2,3,4,5,6,7,8,9);  
man.width=53.0;  
man.height=95.3;  
man.animstep=0;  
man.scaleX=.08;  
man.scaleY=.08;  
man.x=-31.5;  
man.y=22;  
var labels:Array=man.mc.currentLabels;  
for (var i:uint = 0; i \< labels.length; i++)  
{  
var label:FrameLabel = labels\*;  
trace("frame " + label.frame + ": " + label.name);  
}

}

stage.addEventListener(KeyboardEvent.KEY\_DOWN, down);  
stage.addEventListener(KeyboardEvent.KEY\_UP, up);  
function down(event:KeyboardEvent)  
{  
if(event.keyCode==37)  
{man.moveLeft=true;  
}  
else if(event.keyCode==39)  
{man.moveRight=true;  
}  
else if(event.keyCode==32)  
{  
if (!man.inAir)  
man.jump=true;  
}  
}  
function up(event:KeyboardEvent)  
{  
if(event.keyCode==37)  
{man.moveLeft=false;}  
else if(event.keyCode==39)  
{man.moveRight=false;}  
count();  
function count()  
{ for (var a:int=0; a\<this.rect.numChildren; a++)  
{   
var mc:Object=this.rect.getChildAt(a);  
if (mc is wall)  
{  
var floorwall:Object=new Object();  
floorwall.topside=mc.y;  
floorwall.bottomside=mc.y+mc.height;  
floorwall.leftside=mc.x;  
floorwall.rightside=mc.x+mc.width;  
wal[t]=floorwall;  
t++;  
}  
}  
}  
function moveman(Char:Object, timediff:int)  
{  
var vertical:Number=Char.dy + gravity_timediff;  
if (vertical\>15)  
vertical=15.0;  
Char.dy+= timediff_gravity;  
var horizontalDist:Number=0;  
var newDirection:int=Char.direction;  
if (Char.moveLeft)  
{  
horizontalDist=-Char.walkspeed \* timediff;  
newAnimstate=“walk”;  
newDirection=-1;

```
			}
			else if(Char.moveRight)
			{	
				horizontalDist=Char.walkspeed*timediff;
				newAnimstate="walk";
				newDirection=1;
			}
			 if(Char.jump)
			{
				Char.jump=false;
				vertical=-Char.jumpspeed;
				newAnimstate="jump";
			}
			
			var newY:Number= Char.mc.y + vertical;
			var newX:Number= Char.mc.x+ horizontalDist;
			Char.hitWallLeft=false;
			Char.hitWallRight=false;
			Char.inAir=true;
		for (var j:int=0;j&lt;wal.length; j++)
		{  
                       if ((Char.mc.x+Char.width/2 &gt;wal[j].leftside) &&   
                        (Char.mc.xChar.width/2&lt;wal[j].rightside))                                                     
		   { if ((Char.mc.y &lt;= wal[j].topside)&(newY&gt;wal[j].topside))
		    { 
				newY=wal[j].topside-Char.width/10;
				Char.inAir=false;
				Char.dy=.5;
				break;
		     }
		   }
		 }
		    for (var j:int=0; j&lt;wal.length; j++)
{
	if((newY&gt;wal[j].topside) && (newY-Char.height&lt;wal[j].bottomside))
	{
           	if (( (Char.mc.x- Char.width/2) &gt;=wal[j].rightside) && 
                    ((newX-Char.width/2 )&lt;= wal[j].rightside))
	     {	
		newX=wal[j].rightside + Char.width/2;
		Char.hitWallLeft=true;
		break;
	     }
	      else if (((Char.mc.x+Char.width/2)&lt;=wal[j].leftside) && 
                  (newX +Char.width/2&gt;=wal[j].leftside))
	    {	
	      newX=wal[j].leftside-Char.width/2;
	      Char.hitWallRight=true;
	      break;
	    }
       }					 
  }
		   Char.mc.x=newX;
			Char.mc.y=newY;
			if (Char.inAir)
			{
				newAnimstate="jump";
			}
			else if(!Char.inAir)
			{
				newAnimstate="walk";
			}
			Char.animstate=newAnimstate;
			if (Char.animstate == "walk") 
			{
			Char.animstep += timediff/60;
			trace(Char.animstep);
			if (Char.animstep &gt; Char.walkAnimation.length)
			{	
				Char.animstep = 0;
			}
			
			}
			else 
			{
			Char.mc.gotoAndStop(Char.animstate);
			              Char.mc.gotoAndStop(Char.walkAnimation[Math.floor(Char.animstep)]);
			}
		
		if (newDirection != Char.direction)
		{
			Char.direction = newDirection;
			Char.mc.scaleX =-.08;
			
		}
	}
	function gameloop(event:Event)
	{
		if (lastTime==0)
		lastTime=getTimer();
		var timeDiff:int=lastTime-getTimer();
		lastTime+=timeDiff;
		moveman(man,timeDiff);
	}
```
