2012-11-24 3 views
0

나는 플래시를위한 풍선 싸움 게임을 만들려고 노력하고있다. 나는 화면 상단에 천장이있어서 플레이어가 그것을 명중하면 튀어 나와야한다. 문제는, 그 일을하는 법을 모른다. 여기에 코드가 있습니다.히트 테스트 바운스

나는 수를 뒤범벅했다. 문제가있는 upBumping 변수에서 캐릭터가 부딪치게되면 바운스를 되 돌리고 싶지만 한 번만 수행합니다. 후에는 천장을 통과합니다. 아마 내가 잘못된 방향으로 갈거야? 여기

//gravity and stuff 
var gravity:Number = 0.3; 
var fall:Number = 0.3; 
var downBumping:Boolean = false; 
var upBumping:Boolean = false; 

//direction I guess 
var leftKeyDown:Boolean = false; 
var upKeyDown:Boolean = false; 
var rightKeyDown:Boolean = false; 
var spaceKeyDown:Boolean = false; 

//character movement ya'll 
var mainSpeed:Number = 6; 

stage.addEventListener(Event.ENTER_FRAME, game); 
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); 
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); 

function game(e:Event): void{ 

//if certain keys are down then move dat fool 
    if(leftKeyDown){ 
     Monkey.x -= mainSpeed; 
    } 
    if(rightKeyDown){ 
     Monkey.x += mainSpeed; 
    } 
    if(upKeyDown){ 

     fall = fall-0.9; 
     gravity = 0.3; 
    } 
    if(Floor.hitTestObject(Monkey)){ 
     downBumping = true; 
     trace("downBumping"); 
    } 
    if(Ceiling.hitTestObject(Monkey)){ 
     upBumping = true; 
     trace("upBumping"); 
     trace(Monkey.y); 
    } 
    if(upBumping){ 
     Monkey.y += 20; 
    } 
    Monkey.y = Monkey.y+fall; 
    gravity = gravity*1.0; 
    fall = fall+gravity; 

} 
+0

이것은 매우 광범위한 질문이며 이러한 종류의 질문은 일반적으로 매우 환영받지 못합니다. 자신 만의 물리 엔진을 만들고 싶다면 hitTestObject보다 더 깊게 파고들 필요가 있습니다. http://box2dflash.sourceforge.net/와 같이 AS3에서 사용할 수있는 물리 엔진을 사용할 수도 있습니다. – Pier

+0

@ 피어 : 정중히 동의합니다. Bindlestick이하고 싶어하는 것을 보여주는 간단한 코드 스 니펫이 있으며, 간단한 게임의 경우 물리 엔진이 종종 불필요합니다. – apscience

+0

주관적인 문제라고 생각합니다. 그래서 나는 그 질문을 하향 회선하지 않았다. ;) – Pier

답변

0

내가 점프와 수신 거부를 할 것입니다 방법 - 당신이 이미 분명히

function game(e:Event):void { 
    if(jumping){ 
     yVelocity += 0.1; //gravity 
     Monkey.y += yVelocity; 
     if(Floor.hitTestObject(Monkey)){ 
      jumping = false; 
      while(Floor.hitTestObject(Monkey)){ 
       y--; 
      } 
     } 
     if(Ceiling.hitTestObject(Monkey)){ 
      yVelocity = 0; 
      while(Ceiling.hitTestObject(Monkey)){ 
       y++; 
      } 
     } 
    } 
    if(upKeyDown && !jumping){ 
     jumping = true; 
     yVelocity = -3; 
    } 
} 

는,이 예에서 사용 된 변수를 선언 할 것을 가지고 있기 때문에이 왼쪽에서 오른쪽으로 옮기는 등의 다른 코드가 포함되어 있지 않습니다.

+0

고마워요, gladoscc. 나는 점프와 yVelocity를 중력과 추락 변수로 대체합니까? – Bindlestick