2015-01-26 4 views
0

LibGdx 프레임 워크에서 flappy bird 복제본을 재생하는 방법에 대한 가이드를 따르고 있습니다. - http://www.kilobolt.com/day-5-the-flight-of-the-dead---adding-the-bird.html누군가 중력의 가치를 실험하는 방법을 설명 할 수 있습니까?

저는 현재 실제 조류와 조류 뒤에 물리학을 추가하는 방법에 대해 저자가 논의하는 부분에 있습니다. 그는 이러한 인스턴스 변수

private Vector2 position; 
private Vector2 velocity; 
private Vector2 acceleration; 
private float rotation; // For handling bird rotation 
private int width; 
private int height; 

와 새의 상태를 캡슐화 그는 저자는 y 방향의 460 일정한 가속도 때문이라고 설명

public Bird(float x, float y, int width, int height) { 
    this.width = width; 
    this.height = height; 
    position = new Vector2(x, y); 
    velocity = new Vector2(0, 0); 
    acceleration = new Vector2(0, 460); 
} 

생성자 내부의 이러한 인스턴스 변수 또는 필드를 초기화 중력, 즉 지구의 중력은 매 초 9.8m/s 또는 9.8m/s^2의 속도로 물체를 일으 킵니다.

그가 460을 어떻게 결정했는지 묻는 질문에 저자는 "가속은 실험적으로 결정되었으며 그 값은 변하지 않습니다."라고 답했습니다.

제 질문은이 값에 대해 어떻게 실험 하시겠습니까? 어떤 정보를 사용 하시겠습니까? 이 실험의 과정을 이해하는 것은 중력을 응용 프로그램에 포함시키려는 개발자에게 유용 할 것이라고 생각합니다. 이 460은 게임 단위로 간주됩니다. 이전에 다음과 같이 정의 된 저자 인 james cam.setToOrtho(true, 136, 204);

+0

FYI 실제 게임과 실제 게임을 비교할 수 없으므로 정규 물리 계산 및 상수가 현실에 가깝게 시뮬레이션하려고하는 게임 (예 : 행성 운동 및 중력이 발생 함)에서도 자주 잘못 작동합니다. 자주). 따라서 대개 실세계 물리 상수/공식을 사용하여 "정상"동작을 얻은 다음 게임에 적합하다고 판단 될 때까지 값/공식을 조정합니다. – LearnCocos2D

답변

2

"실험적으로 결정한"은 작성자가 효과가있는 것을 발견 할 때까지 다양한 값을 시도한다는 의미입니다. 수학이나 복잡한 마법은 없습니다. 실험을하려면 그냥 바꿔서 프로그램을 다시 실행하십시오. 당신이 보는 것을 좋아한다면 그것을 사용하십시오. 그렇지 않은 경우 적절하게 조정하십시오.

9.8m/s²의 숫자는 지구의 중력이 어떻게 작동 하는지를 나타냅니다. 실제 게임의 구현과는 아무런 관련이 없습니다.

+0

그래서 실제로는 그냥 임의의 값을 테스트하고 있습니까? 그래도 계산을 할 수 없습니까? 픽셀을 미터 또는 다른 것으로 변환하는 것과 비슷합니까? – committedandroider

+0

@committedandroider 당신은 * 할 수는 있지만, 게임 디자인의 관점에서 최선의 생각을하지는 않을 것이며, 시간 낭비 일 것입니다. –

0

픽셀이 나타내는 실제 크기를 정의 할 수 있습니다. 그런 다음 운동학 공식을 사용하여 엿보기로 이동하여 다시 떨어질 때까지 어떤 시간이 걸릴지 계산하십시오. 그런 다음 게임 개체의 시간을 측정하고 점프가 계산 한 시간과 거의 같은 시간에 중력을 조정하십시오.