我正在AS3制作一个蛙人游戏,当你向上,向下,向左和向右按压时,你会“跳过”一定数量的空间,而不是像大多数平台游戏那样逐渐移动到那里。我怎么能这样做?
目前,他在各自的钥匙上向左,向下和向右移动。但是他逐渐移动到那里,而不是像真正的蛙人那样跳过太多的空间。
关于如何做到这一点的任何想法?
代码:
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
function keyDownHandler(event:KeyboardEvent):void{
if (event.keyCode == Keyboard.UP){
trace("frogger up");
player.y -= 5;
}
if(event.keyCode == Keyboard.DOWN){
trace("frogger down");
player.y += 5;
}
if(event.keyCode == Keyboard.LEFT){
trace("frogger left");
player.x -= 5;
}
if(event.keyCode == Keyboard.RIGHT){
trace("frogger right");
player.x += 5;
}
}
答案 0 :(得分:0)
一种方法是增加X和Y一定量,就像Marty在评论中说的那样,50 ..或者你可以创建两个变量,让我们将它们命名为xPosition
& yPosition
。
按住键时,您只需将这些变量增加/减少1,然后调用定位函数,该函数将根据xPosition
和yPosition
的值计算玩家的新位置,当然是网格尺寸。
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
var xPosition:int = 0;
var yPosition:int = 0;
var gridWidth:int = 32;
var gridHeight:int = 32;
function keyDownHandler(event:KeyboardEvent):void{
if (event.keyCode == Keyboard.UP){
yPosition--;
repositionPlayer();
}
if(event.keyCode == Keyboard.DOWN){
yPosition++;
repositionPlayer();
}
if(event.keyCode == Keyboard.LEFT){
xPosition--;
repositionPlayer();
}
if(event.keyCode == Keyboard.RIGHT){
xPosition++;
repositionPlayer();
}
}
function repositionPlayer():void{
player.x = gridWidth*xPosition;
player.y = gridHeight*yPosition;
}
如果您想要更改网格大小,这将为您提供一个很大的优势。