PDA

Volledige versie bekijken : Langzaam speed verminderen.


shellshock
%Europe/Berlin %770 %2009, 18:29
Haai guys,

ik zit even met een probleem. Ik wil vlieg spel maken van boven af waarbij je gebruikt maakt met de pijltjes toetsen. Maar wanneer ik na rechts ga en dan de pijltje los laat dan stopt ie meteen met naar rechts gaan. Ik wil eigenlijk dat het vliegtuig langzaam nog naar rechts gaat totdat hij geen speed meer heeft. Zo heeft het beetje realistisch effect. Ik hoop dat het beetje te begrijpen valt.

Hier nog mijn code:

//Keys

var KeyPressedUp:Boolean = false;
var KeyPressedRight:Boolean = false;
var KeyPressedDown:Boolean = false;
var KeyPressedLeft:Boolean = false;

//First we create the player

var Player:player = new player();
Player.x = 250;
Player.y = 300;
addChild(Player);

var Player_speed:Number = 0; //Speed of own plane
var Player_MoveSteps:Number = 0.50; //Speed of own plane
var Player_maxSpeed:Number = 5; //Speed of own plane
/* All Events here */

stage.addEventListener (Event.ENTER_FRAME, StageController);
stage.addEventListener (KeyboardEvent.KEY_DOWN, KeyPressEvent);
stage.addEventListener (KeyboardEvent.KEY_UP, KeyReleaseEvent);


/*All functions here*/


function StageController (e:Event):void
{
if(KeyPressedLeft)
{
Player_speed += Player_MoveSteps;
Player.x -= Player_speed;
}
if(KeyPressedRight)
{
Player_speed += Player_MoveSteps;
Player.x += Player_speed;
}

if(KeyPressedUp)
{
Player_speed += Player_MoveSteps;
Player.y -= Player_speed;
}

if(KeyPressedDown)
{
Player_speed += Player_MoveSteps;
Player.y += Player_speed;
}
}


function KeyPressEvent(e:KeyboardEvent):void
{
switch(e.keyCode)
{
case 37: // Left
KeyPressedLeft = true;
break;
case 38: // Up
KeyPressedUp = true;
break;
case 39: // Right
KeyPressedRight = true;
break;
case 40: // Down
KeyPressedDown = true;
break;
}
}

function KeyReleaseEvent(e:KeyboardEvent):void
{
switch(e.keyCode)
{
case 37: // Left
KeyPressedLeft = false;
break;
case 38: // Up
KeyPressedUp = false;
break;
case 39: // Right
KeyPressedRight = false;
break;
case 40: // Down
KeyPressedDown = false;
break;
}
}


Alvast bedankt!
Joris

Televisie
%Europe/Berlin %827 %2009, 19:50
Je zou er eigenlijk voor moeten zorgen dat het verplaatsen ook plaatsvindt, als er geen toets wordt ingedrukt. Dat kun je doen door Player.x += Player_speed buiten het if-blok te plaatsen:

var direction;

function StageController (e:Event):void
{
if(KeyPressedLeft)
{
Player_speed += Player_MoveSteps;
direction = 1;
}
if(KeyPressedRight)
{
Player_speed += Player_MoveSteps;
direction = -1;
}

Player.x += (direction * Player_speed);
Player_speed = Player_speed * 0.95
}

ORay
%Europe/Berlin %953 %2009, 22:52
Je zou er eigenlijk voor moeten zorgen dat het verplaatsen ook plaatsvindt, als er geen toets wordt ingedrukt. Dat kun je doen door Player.x += Player_speed buiten het if-blok te plaatsen:

var direction;

function StageController (e:Event):void
{
if(KeyPressedLeft)
{
Player_speed += Player_MoveSteps;
direction = 1;
}
if(KeyPressedRight)
{
Player_speed += Player_MoveSteps;
direction = -1;
}

Player.x += (direction * Player_speed);
Player_speed = Player_speed * 0.95
}

dat zal werken ja, alleen wil hij (als ik het goed begrijp) dat de het vliegtuig dan langzaam stilstaat als je niets indrukt
dus zal het zoiets moeten worden


function StageController (e:Event):void
{
if(KeyPressedLeft)
{
Player_speed += 1;
}else if(KeyPressedRight)
{
Player_speed -= 1;
}else if(Player_speed!=0){//niets ingedrukt!!
//verminder snelheid met 80%
Player_speed *= 0.8;
//dat procces kan natuurlijk eeuwig daargaan dus daarom als de snelheid kleiner dan 1 is dan mag de snelheid 0 worden
if(Player_speed<1&&Player_speed>-1){
Player_speed = 0;
}
}

Player.x += Player_speed;
}


( fouten voorbehouden;) )

shellshock
%Europe/Berlin %986 %2009, 23:40
dat zal werken ja, alleen wil hij (als ik het goed begrijp) dat de het vliegtuig dan langzaam stilstaat als je niets indrukt
dus zal het zoiets moeten worden


function StageController (e:Event):void
{
if(KeyPressedLeft)
{
Player_speed += 1;
}else if(KeyPressedRight)
{
Player_speed -= 1;
}else if(Player_speed!=0){//niets ingedrukt!!
//verminder snelheid met 80%
Player_speed *= 0.8;
//dat procces kan natuurlijk eeuwig daargaan dus daarom als de snelheid kleiner dan 1 is dan mag de snelheid 0 worden
if(Player_speed<1&&Player_speed>-1){
Player_speed = 0;
}
}

Player.x += Player_speed;
}


( fouten voorbehouden;) )


He! bedankt man! het werkt, alleen rechts en links waren omgekeerd maar dat is doormiddel van + en - verwisselen opgelost! Bedankt!