0
我嘗試在ActionScript 3中創建一個平臺遊戲。我已經有了一些用於移動和動畫角色的代碼,以及一個簡單的平臺樣式,但是我想讓角色撞牆或者撞到底部的平臺。在這個時候,我有這樣的:我曾經在YouTube上找到任何東西,或谷歌4天如何在AS3平臺遊戲中創建平臺?
import flash.events.KeyboardEvent;
import flash.events.Event;
var KeyThatIsPressed:uint;
var rightKeyDown:Boolean = false;
var leftKeyDown:Boolean = false;
var upKeyDown:Boolean = false;
var downKeyDown:Boolean = false;
var gravity:Number = 1;
var yVelocity:Number = 0;
var canJump:Boolean = false;
var playerSpeed:Number = 7;
var crouchSpeed:Number = -4;
stage.addEventListener(KeyboardEvent.KEY_DOWN, PressAKey);
stage.addEventListener(KeyboardEvent.KEY_UP, ReleaseAKey);
function PressAKey(event:KeyboardEvent):void{
if(event.keyCode == 37 || event.keyCode == 65){
leftKeyDown = true;
}
if(event.keyCode == 38 || event.keyCode == 87){
upKeyDown = true;
}
if(event.keyCode == 39 || event.keyCode == 68){
rightKeyDown = true;
}
if(event.keyCode == 40 || event.keyCode == 83){
downKeyDown = true;
}
}
function ReleaseAKey(event:KeyboardEvent):void{
if(event.keyCode == 37 || event.keyCode == 65){
leftKeyDown = false;
}
if(event.keyCode == 38 || event.keyCode == 87){
upKeyDown = false;
}
if(event.keyCode == 39 || event.keyCode == 68){
rightKeyDown = false;
}
if(event.keyCode == 40 || event.keyCode == 83){
downKeyDown = false;
}
}
char_mc.addEventListener(Event.ENTER_FRAME, moveChar);
function moveChar(event:Event):void{
if(rightKeyDown){
char_mc.x += playerSpeed;
char_mc.scaleX = 1;
}
if(rightKeyDown && !downKeyDown && canJump == true){
char_mc.gotoAndStop(2);
}
if(leftKeyDown){
char_mc.x -=playerSpeed;
char_mc.scaleX = -1;
}
if(leftKeyDown && !downKeyDown && canJump == true){
char_mc.gotoAndStop(2);
}
if(upKeyDown && canJump){
yVelocity = -10;
canJump = false;
char_mc.gotoAndStop(3);
}
if(downKeyDown && !rightKeyDown && !leftKeyDown){
char_mc.gotoAndStop(4);
}
if(downKeyDown && rightKeyDown && canJump == true){
char_mc.x +=crouchSpeed;
char_mc.gotoAndStop(5);
}
if(downKeyDown && leftKeyDown && canJump == true){
char_mc.x -=crouchSpeed;
char_mc.gotoAndStop(5);
}
if(upKeyDown && canJump && rightKeyDown){
canJump = false;
char_mc.gotoAndStop(3);
}
if(upKeyDown && canJump && leftKeyDown){
canJump = false;
char_mc.gotoAndStop(3);
}
if(!rightKeyDown && !leftKeyDown && !upKeyDown && !downKeyDown){
char_mc.gotoAndStop(1);
}
if(yVelocity >0){
canJump = false;
}
if (canJump == false){
char_mc.gotoAndStop(3);
}
yVelocity +=gravity;
if(! floor_mc.hitTestPoint(char_mc.x, char_mc.y,true)){
char_mc.y+=yVelocity;
}
if(yVelocity > 20){
yVelocity = 20;
}
for(var i:int=0;i<10;i++){
if(floor_mc.hitTestPoint(char_mc.x,char_mc.y,true)){
char_mc.y--;
yVelocity=0;
canJump=true;
}
}
if (char_mc.hitTestObject(fallBox)){
char_mc.x = 20;
char_mc.y = 300;
}
}
後或任何地方,我來到了這裏。我希望你能幫忙。謝謝!
這些看起來不錯,但仍然不是我所搜索的。我已經買了citrusengine,而且我沒有錢,而Box2D太難了。我需要一個簡單的解決方案來解決這個問題,比如'使用hitTest和怎麼樣'或者其他一些變量... – user1429524
建議一個框架並不能回答這個問題,最好的學習工具就是DIY。 –