2013-04-23 2 views
0

저는 물리 엔진으로 약간의 게임을 만들려고 노력하고 있습니다. 특히 좋은 재사용 가능한 아키텍처를 만들기 위해 노력하고 있습니다.물리 엔진에서 영웅의 움직임을 다루는 방법은 무엇입니까?

저는 가능한 한 최선의 방법으로 Hero Entity의 제어를 처리하려고합니다. 내가 시도한 첫 번째 개념은 키를 누를 때 속도를 추가하고 단추를 놓을 때 속도의 반대 방향을 제거하는 것입니다. 하지만 큰 문제에 직면했습니다. 플레이어가 벽을 치면 속도가 0으로 설정됩니다. 그런 다음 플레이어가 키를 놓으면 음의 속도가 설정 되었기 때문에 플레이어가 뒤로 걸어갑니다.

힘을 사용하여 다른 개념을 시도했지만이 간단한 문제에 대해 실행 가능한 솔루션을 찾을 수 없습니다. : C

누구나 위험한 생각인가요? (추신 : 나는 CNA에서 XNA와 물리 엔진 Farseer를 사용하여 코딩하고있다.)

+1

문제와 관련된 모든 코드를 게시하십시오. –

+0

어떤 종류의 게임입니까? platformer? –

답변

0

그래서 키를 놓으면 영웅은 벽에 충돌했는지 여부와 상관없이 뒤로 걸어 오기 시작한다. 음, 기본적으로 플레이어가 전에 속도를 가지고 있는지 또는 벽에 충돌했는지 확인할 수 있습니다.

//If we have the key pressed, add velocity 
if (KeyPressed) 
{ 
    Hero.speed += constant; 
} 
else if (!KeyPressed) 
{ 
    //If it's stopped, don't move it! 
    if (Hero.speed == 0) 
    { 
     //In this case, you do nothing 
    } 
    //If it has been moving, reduce the velocity 
    else 
    { 
     Hero.speed -= constant; 
    } 
} 

//Let's check 
if (Hero collided with Wall) 
{ 
     Hero.speedX = 0; 
} 

을 당신이 아이디어를 볼 수 있다고 생각 : 여기에 작동해야 의사의 비트가. 코드를 게시하면 더 좋을 것이므로 사용 된 구조에 따라 수정할 수 있습니다. 이것이 유용하게되기를 바랍니다. 작동하지 않으면 제발 말해주십시오.)

관련 문제