2012-07-04 3 views
0

전 게임을 제작했지만 충돌 및 물리 문제가있는 간단한 html5 플랫폼 작성자로 일하고 있습니다. 아래는 바닥과 충돌을 다루는 방법에 관한 코드 샘플입니다. 전체 코드는 여기에 있습니다. http://www.ambitiongames.co.uk/dev/game.php 여기에 게임이 있습니다 http://www.ambitiongames.co.uk/dev/html5 캔버스 객체 충돌 및 물리계

내가 겪고있는 문제는 충돌이 게임을 바닥에 놓아 두는 이벤트를 기반으로한다는 것입니다.

도 점프 및 낙하 작업으로 인해 중력이 없어 플레이어가 더 높은 선반으로 뛰어 올라 공중으로 벗어날 수 있습니다.

영원의 중력 상태를 설정하는 좋은 방법은 무엇입니까?

바닥이나 다른 물체와 상호 작용하거나 충돌하는 좋은 방법은 무엇입니까?

 that.draw = function(){ 
      try { 
       ctx.drawImage(that.image, that.x, that.y, that.width, that.height); 
       } catch (e) { 
       } 
     } 
     return that; 
    }; 

    var nrOffloors = 40, 
     floors = [], 
     floorWidth = 20, 
     floorHeight = 40; 
     var generatefloor = function(){ 

      for (var i = 0; i < 10; i++) { 
       floors[i] = new Floor(i * 20,280); 
      } 
      for (var i = 10; i < 12; i++) { 
       floors[i] = new Floor(i * 20,260); 
      } 
     }(); 

    var checkCollisionfloor = function(){ 
     floors.forEach(function(e, ind){ 
      if ( 
       (player.X < e.x + floorWidth) && 
       (player.X + player.width > e.x) && 
       (player.Y + player.height > e.y) && 
       (player.Y + player.height < e.y + floorHeight) 

       ) { 
        e.onCollide(); 
       } 
     });  
    } 
+0

게임을로드 할 수 없으며 매우 광범위한 질문입니다.하지만 이와 같은 게임을 디자인 할 때 전통적인 객체 지향 접근법을 활용하면 탁월한 이점을 얻을 수 있습니다. 이 방법으로 각 객체 (플레이어 및/또는 다른 것)는 자신의 속도와 가속도를 추적 할 수 있으며 중력에 대한 계산은 매우 간단합니다. 본질적으로 기존의 가속도에 중력으로 인한 일정한 음의 가속도를 추가하는 것 뿐이며 플레이어가 0보다 아래로 떨어지지 않도록 플레이어의 Y 위치를 추적 할 수 있습니다 – Cecchi

+0

... 타격을 시뮬레이트하려면 그라운드는 플레이어의 속도를 뒤집을 수 있습니다. 그러면 플레이어가 조금 튀어 오를 것입니다. 결국 중력이 그들을 떨어 뜨립니다. – Cecchi

+0

나는 당신의 말을 그래서 대신 var'Floor = function (x, y) {여기에 물건을 넣어'var StartButton = new Object();'대신에 변수를 추가하겠습니까? –

답변

1

Box2D.js과 같은 라이브러리를 사용해 볼 수 있습니다. 그것은 충돌 감지에서 중력에 이르기까지 모든 것을 처리합니다.

데모를 확인하십시오.

+0

thats 실제로 꽤 멋진 감사합니다 :) 그 주위에 놀고 난 후에 내가 필요로했던 것. –