Player Movement with Velocity
Expending on the previous space shooter example, I’ve added velocity to player movement.
Here’s the updated code:
/** * Player Movement with velocity * * Version: 1.0 * Author: Philip Radvan * URL: http://www.freeactionscript.com */ package code { import flash.display.MovieClip; import flash.events.Event; import flash.events.KeyboardEvent; import flash.ui.Keyboard; public class GameEngine extends MovieClip { // Movement Flags public var up:Boolean = false; public var down:Boolean = false; public var left:Boolean = false; public var right:Boolean = false; // Movement Settings public var thrust:Number = .5; public var decay:Number = .97; public var maxSpeed:Number = 10; public var speedX:Number = 0; public var speedY:Number = 0; public var speed:Number = 0; public var rotationSpeed:Number = 5; /** * Constructor */ public function GameEngine() { stage.addEventListener(KeyboardEvent.KEY_DOWN, myOnPress); stage.addEventListener(KeyboardEvent.KEY_UP, myOnRelease); stage.addEventListener(Event.ENTER_FRAME, myOnEnterFrame); } /** * Main Game Loop */ public function myOnEnterFrame(event:Event):void { // Rotate right or left if( right ) { player.rotation += rotationSpeed; } if( left ) { player.rotation -= rotationSpeed; } if( up ) { // Calculate speed and trajectory based on rotation speedX += thrust*Math.sin(player.rotation*(Math.PI/180)); speedY += thrust*Math.cos(player.rotation*(Math.PI/180)); player.flames.visible = true; } else{ // Deccelerate when Up Arrow key is released speedX *= decay; speedY *= decay; player.flames.visible = false; } // Maintain speed limit speed = Math.sqrt((speedX*speedX)+(speedY*speedY)); if( speed > maxSpeed ){ speedX *= maxSpeed/speed; speedY *= maxSpeed/speed; } // Move player based on calculations above player.y -= speedY; player.x += speedX; // Loop to opposite side of the map // when player travels off-screen if( player.y < map.y ){ player.y = map.height; } if( player.y > map.height ){ player.y = map.y; } if( player.x < map.x ){ player.x = map.width; } if( player.x > map.width ){ player.x = map.x; } } /** * Keyboard Handlers */ public function myOnPress(event:KeyboardEvent):void { switch( event.keyCode ) { case Keyboard.UP: up = true; break; case Keyboard.DOWN: down = true; break; case Keyboard.LEFT: left = true; break; case Keyboard.RIGHT: right = true; break; } } public function myOnRelease(event:KeyboardEvent):void { switch( event.keyCode ) { case Keyboard.UP: up = false; break; case Keyboard.DOWN: down = false; break; case Keyboard.LEFT: left = false; break; case Keyboard.RIGHT: right = false; break; } } }// end of class }// end of package |
2 Comments to Player Movement with Velocity
This is a wonderful resource and i am happy to see that you started to convert your as2 projects to as3,finally! Thanks.
November 12, 2009
Wow, this is a really helpful piece of actionScript, I will definitely be using it soon. The problem is I recently changed to Windows 7 so I haven’t got flash at the moment
But I look forward to more great script nonetheless!
Leave a comment
You must be logged in to post a comment.
CategoriesLinks |

November 9, 2009