2013-10-20 2 views
0

시작하려면 2D 비디오 게임을 만드는 중입니다. 게임은 C#으로 코딩되어 있으며 프레임 워크는 XNA와 함께 있습니다. 나는 기본적인 물리 엔진을 만들 수있는 쉬운 방법이 무엇인지, 어디에 놓을 지 궁금해했다. XNA에 대한 내 경험은 광범위하지 않지만 물리없이 게임을 만들만큼 충분히 알고 있으므로 당연히 물리학을 추가하고자합니다 (플레이어를 끌어 내리는 점프 기능). 내 목표는 Terraria 또는 Super Mario와 유사한 물리학으로 끝나는 것입니다. 어디에서 시작해야하는지에 대한 아이디어가 있습니까? 나는 플레이어를 끌어 내려고 다른 플레이어를 끌어 올리는 벡터가 적어도 필요하다는 것을 알고있다. 그러나 내가 아는 것만 큼 .........사이드 스크롤링 게임을위한 2D 물리 시뮬레이터를 만드는 방법

+0

코드 플렉스 또는 Github에서 시작하여 기존 엔진을 찾으십시오. 물론, 당신의 목표는 물리 엔진을 만드는 법을 배우는 것입니다. – galenus

+0

제 목표는 가벼운 무게와 단순한 것을 만드는 것입니다. 나는이 일을 짓는데 며칠을 보내고 싶지 않다. 비록 내가 아주 쉽게 그것을 할 수 있음을 안다. 나는 구글을 보았고, 실제로 찾을 수 있었던 것은 거대했고 통합하기가 다소 복잡한 물리 엔진이었다. –

+0

온라인 게임 엔진 및 물리학 자습서가 많이 있습니다. 그들은 이런 종류의 노력을 시작하기에 더 좋은 곳입니다. 그런 다음 * 실제 * 문제가 발생하면 (기존 질문이없는 경우) SO에 대한 게시물이 더 적합합니다. – user2864740

답변

0

플레이어가 물건을 물리거나 물리 칠 필요가 없다면, 당신은 점프하는 것을 의미합니다. 그리고 나서 전통적인 횡 스크롤 에서처럼 점프를 구현하는 것은 간단합니다. 당신이 리팩토링이 코드를 아름답게, 위치를 확인 할 수 있습니다, 물론

float currentYspeed; 
float GRAVITY = 5; 
bool playerFlying; 

// In Update(): 
if (isUpArrowKeyDown() && !playerFlying) { playerFlying = true currentYspeed = 50; } 
playerY += currentYspeed; 
currentYspeed -= GRAVITY; 
if (playerCollidesWithFloor()) 
{ 
    currentYspeed = 0; // We came back to ground. 
    playerFlying = false; 
} 
else if (playerCollidesWithSomethingElse()) 
{ 
    currentYSpeed = 0; // We hit obstacle in-air. 
} 

와 속도 등 경과 초

경우에 따라 변경 :

이 같은 일을 수행 할 수 있습니다 당신은 충돌 함수를 구현하는 방법을 모르고, 키워드 "2D collision detection"또는 "sidescroller/platformer tutorial"을 읽는 것을 고려합니다.

관련 문제