2017-01-05 3 views
2

죄송합니다. 제 제목을 올바르게 말하지 못했지만 여기서 더 명확하게 제 문제를 설명하겠습니다.Box2D는 FPS와 관계없이 동일한 속도로 시체를 이동합니다.

저는 libgdx를 사용하고 있습니다.

나는 내가 이렇게 모든 FPS와 같은 거리 커버 있도록 텍스처를 이동할 때 :

//...define Player class with x property up here. 

Player player = new Player(); 
int SPEED = 100 
public void render() { 
    player.x += SPEED * Gdx.graphics.getDeltaTime(); 
} 

이 지금은 같은이 몸에 영향을 가지고이 작업을 수행하는 방법을 알고 싶어를 박스 2d. 그 가속도의 증가 때문에 이는 playerBody에 힘을인가

public void render() { 

    //clear screen, ... do other stuff up here. 

    playerBody.applyForce(new Vector2(0.5f/PIXEL_PER_METER, 0.0f), playerBody.getWorldCenter(), true); 
    //PIXEL_PER_METER -> applied to scale everything down 

    //update all bodies 
    world.step(1/60f, 6, 2); 
} 

예를 들면 : (ApplicationAdapter를 확장하는 클래스의 렌더링 방법)이다. 첫 번째 예와 마찬가지로 해안을 30fps, 10fps, 60fps 등의 속도로 일정하게 유지하는 방법을 설명합니다. 나는 world.step을 시뮬레이트 할 시간이지만 이 값은 변하지 않아야합니다.

미리 감사드립니다.

답변

1

당신은 델타 모든 시체를 업데이트 할 수 있습니다

world.step(Gdx.graphics.getDeltaTime(), 6, 2); 

EDIT (안 1/60 고정 델타) : (거대한 점프가 발생) 높은 델타 값을 방지하기 위해 @ Tenfour04으로 언급, 우리는 대부분 설정 델타를위한 모자.

world.step(Math.min(Gdx.graphics.getDeltaTime(), 0.15f), 6, 2); 
+0

오 : 한 번 봐? – Nalyd

+0

일부 게임 개발자는 고정 델타 (예 : 1/60)로 단계 논리를 구현합니다. 따라서 모든 프레임이 게임에 동일한 영향을 미치는지 확인합니다. 멀티 플레이 게임 구현에 좋은 점은 – cokceken

+0

인데, 느린 컴퓨터에서 게임을 실행하는 사람에게 큰 불이익을주지 않을 것이라고 생각하십니까? – Nalyd

0

나는 변수 타임 스텝을 사용하지 것이다 - 이것은 내가 사용했던 방법입니다 :

private float time = 0; 
private final float timestep = 1/60f; 

public void updateMethod(float delta) { 
    for(time += delta; time >= timestep; time -= timestep) 
     world.step(timestep, 6, 2); 
} 

기본적으로 변수 틱 타임 스텝하지만 균일하게 업데이트.

매우 낮은 FPS로 게임을 실행하거나 응용 프로그램 구성 (예 : 테스트 용)으로 강제 실행하면 정상 60 FPS 인스턴스와 대략 동일한 속도로 계속 업데이트됩니다.

내가 시간 단계 매개 변수가 항상 같은 값이 변경되지 않습니다해야한다고 생각 Fix your timestep!

+0

여러분의 코드 항상 world.step (1/60f, 6, 2)처럼 작동합니다. 왜냐하면 당신은 시간 단계 변수 – cokceken

+0

@cokceken을 변경하지 않기 때문에 요점은 초당 가변적 인 양이라고 불리워서 – Moira

+0

을 따라 잡을 수 있다는 것입니다. 그러면 기본적으로 world.step (delta, 6,2)를 말하는 것과 같습니다. 델타가 커질 때 사용자가 큰 점프를 경험할 수도 있습니다. – cokceken

관련 문제