회전에서 정지하는 방법 :Box2D의 그래서 'A'를 사용하여 'D'로 수평으로 이동할 수있는 선수 (Box2D의 상자)가 플레이어 (박스)
SetLinearVelocity(b2Vec2(speed, object.getB2Object()->GetLinearVelocity().y));
하지만을 나는 상자를 이동할 때 플레이어는과 같이 모서리에 있지만 역할을 밀어하지 않습니다
도 내가 상자의 마찰과 땅을 줄이면 어느 정도이 문제를 방지하지만 여전히 상당히 regulary에 발생하는 것으로 파악하고는한다 플레이어가 멈출 때 더 미끄러집니다. 함수 SetFixedRotation (true)을 시도했지만, 플레이어가 모두 함께 움직이는 것을 멈추게하는 것처럼 보입니다. 아마 회전 할 지점에서 멈추게됩니다. 나는 또한 SetAngularVelocity (0)을 시도했으나 여전히 천천히 회전하고있다. 표면을 이동할 때 플레이어가 회전하지 못하도록하는 다른 방법이 있습니까? 감사합니다
거의 회전하지 않는 상자를 제로로 마찰을 설정하여 무엇을 제안 pingul 수행 한 후 [편집]. 그것은 아주 빈번하게 무언가를 걸어 다니는 것처럼 보였습니다. 바닥을위한 10 개의 개별 타일 대신에 나는 그것을 제거하고 넓은 타일을 만들었고 문제는 멈 췄습니다! 그러므로 나는 상자가 다음 타일을 따라 걸려 넘어지고 있다고 생각한다.
//the number of tiles
const unsigned int MAX_TILES = 10;
for(int i = 0; i < MAX_TILES; i++){
//position ,size ,density ,linear_damping ,friction ,isdynamic,b2World
tiles.push_back(new GameObject(vec3(6+i-(MAX_TILES/2), -10, 1), vec3(1, 1, 0), 1.0f ,1.0f ,0.5f ,false ,world_b2));
tiles[tiles.size()-1]->Init(); //Some OpenGL stuff for rendering
tiles[tiles.size()-1]->getMesh()->setTexture(test_sheet.getTexture(2,0)); //gets a texture from sprite sheet class
}
[편집 2]
수학 라이브러리를 사용하여 : : 이런 일이 왜 모든 타일을 알고 같은 높이, 폭, 위치를 가지고 다음과 같이 나의 다음 문제는 그 다음이다 GLM
타일을 수평 방향으로 겹치게하면 아무 일도 일어나지 않지만이 작업은 수직 축과 관련이 있다고 생각합니다. 플레이어가 회전하거나 회전하지 않을 때 y 값이 약간 변경됩니다. 이것은 위 또는 아래 일 수 있으며 +0.003 ~ 만 변경됩니다. 점프 할 때 바닥 타일 중 하나에서 게임이 시작되면 맨 처음 값으로 돌아갑니다.
마찰을 0으로하면 어떻게됩니까? – pingul
제발 내 편집 확인하십시오 :) – MajesticHey