2014-01-18 5 views
0

재미있는 html5 캔버스를 사용하여 원본 슈퍼 마리오 게임의 복사본을 만들고 캔버스 도구 및 애니메이션에 대해 자세히 알아 보려면 마리오를 만들기에 매달 렸습니다. 내 jsfiddle : http://jsfiddle.net/2tLCk/1/html5 캔버스의 중력

내가 어떻게 내 up 기능 마리오 점프를하고 내가 그것을 코드의 이해하려고이 웹 사이트 http://blog.nihilogic.dk/에서와 같이 땅에 다시 반환하는 문제를 해결하지만 난 할 수 없었다해야합니까?

if (keydown.up) { 

      vy += gravity; 
      character.CurentPos = 11; 
      character.x += character.speed; 
      character.y += vy; 

     } 
+0

점프의 최대 높이를 동적으로 계산하고 'if (character.y> maxHeight) {setTimeout (function() {character.y - = someValue}, 중력)을 확인해야합니다. }'something like this;) – Givi

+0

은 jsfiddle을 게시 할 수 있습니다. – Sora

+0

이것이 최선의 방법인지는 모르겠지만, 이와 같이 작동해야합니다. [jsFiddle updated] (http://jsfiddle.net/GKDev/2tLCk/3/) – Givi

답변

2

가 점프 마리오 http://jsfiddle.net/2tLCk/22/입니다.

점프이 1 - 올라간다면. 점프가 2이면 - 내려갑니다.

if(jumping){ 
    if(jumping == 1) { 
      if(character.y > 140) character.y -= gravity; 
      else jumping = 2; 
    } else if(jumping == 2) { 
      if(character.y < 184) character.y += gravity; 
      else{ 
       character.y = 184; 
       jumping = false; 
       character.CurentPos = 6; 
      } 
    } 
}else if(keydown.up) { 
    jumping = 1; 
    character.CurentPos = 11; 
} 

는 그리고 당신은 아마 대신하여 setInterval이 https://developer.mozilla.org/en-US/docs/Web/API/window.requestAnimationFrame()를 사용할 것입니다.

1

당신은 기본적으로 다운 키를 누를 때뿐만 아니라 항상 중력을 사용하고 싶습니다. 점프 (키 업) 할 때 vy에 추가해야합니다. 이처럼 :

if(keydown.up) { 
     vy += -2; 
    } 
    vy += gravity; 
    if(character.y > 184) { // simple collision detection for ground floor 
     vy = 0; 
     character.y = 184; 
    } 
    //character.CurentPos = 11; 
    //character.x += character.speed; 
    character.y += vy; 

내가 같은 것을 할 것 http://jsfiddle.net/pjQb3/

+0

1 층 충돌 감지 ("if (character.y> 184)") 때문입니다. Y- 위치는 한 프레임에서 184보다 크고 다음 프레임에서 184로 재설정됩니다. 더 나은 충돌 감지 알고리즘이 필요합니다. 내 것은 매우 간단하며 바닥 만 고려합니다. 마리오가 화면에서 떨어지는 것을 막을뿐입니다. –

+0

@Sora 댓글에 귀하의 링크가 즉시 광고 페이지로 리디렉션됩니다. – Jurik

+0

네,하지만 배경을 볼 수 있습니까? 그것은 슈퍼 마리오 게임 어디 마리오 이동하고 점프 할 수있는 점프 내가 내 코드에서 정확한 점프 효과를 구현할 수 있습니다. 어떻게이 점프 효과를 내 코드를 업데이트 할 수 있습니까? – Sora

0

를 참조하십시오 여기에

// Global forces 
character.vy += gravity; 

// User input 
if (keydown.up) { 
    character.vy += -2; 
} 

// Final location 
if (character.y + character.vy >= 184) { 
    // Update player location. 
    character.y += character.vy; 
} else { 
    // Player was about to move past ground so place player directly on ground 
    // and reset velocity. 
    character.y = 184; 
    character.vy = 0; 
}