2013-02-12 27 views
-3

我正在編程一個遊戲(JAVA),我想添加一些引力。我試圖找到一個公式或像這樣的東西,有非常不同的方式來做到這一點。我正在尋找一種能夠模擬真實重力並在物體接觸地板時能夠反彈的配方。對不起,我的英語不好。編程重力

+3

這不是問題,去谷歌「遊戲物理的Java示例代碼」 – Shark 2013-02-12 16:09:09

+0

回彈是由碰撞檢測完成的。重力與它無關 - 只需修改對象的速度即可。 – nhahtdh 2013-02-12 16:09:46

+2

y(t)= - 4.9 * t^2 + v_y_0 * t + y_0 – iamnotmaynard 2013-02-12 16:10:10

回答

1

在地球表面附近,所有下降的物體的重力加速度是恆定的(忽略空氣阻力)。公式xf = x0 + v0*t + (1/2)*g*t^2將給出最終位置xf給定初始位置x0,初始(垂直)速度v0和時間t,該對象已經下降。 g是一個常數,技術上取決於您的高程和其他因素,但大約是9.81 m/s

要做回彈,首先需要做一些碰撞檢測。當你檢測到一個碰撞時,你需要計算與該表面垂直的矢量(如果你的表面是一個水平面,容易),然後「反射」(排序)你的速度矢量那個矢量(如果法向矢量直接指向上方,即,你從平坦的表面反彈,這相當於反轉速度v)。請注意,爲了使其更逼真,您應該在彈跳之後應用一些阻尼:除了反映速度矢量外,還需要將其縮小(取決於彈跳之後的反射方式),這可能會減少一個或兩個組件)。爲了實際模擬這種情況,你可以使用多種技術:預先計算點列表,然後通過它們運行動畫,你可以使用歐拉方法或其他方法模擬所有這些數字正交技術(梯形法則,Runge Kutta等)。

+0

thx,重力正在工作,但如果想讓精靈反彈你說我有理由需要反轉德速度,但如果我打印公式: – user2065368 2013-02-12 17:52:06

+0

200.99 = 0 +(15×13.399)1/2×9.81×(13.399×13.399)//位置Y:199 // 202.499 = 0 +(15×13.499)1/2×9.81×(13.499×13.499)/ /位置Y:200 // -203.99 = 0 +(-15 * 13.599)1/2 * 9.81 *(13.599 * 13.599)//位置Y:202 // -205.499 = 0 +( - 15 * 13.699) 1/2 * 9.81 *(13.699 * 13.699)//位置Y:-203 // – user2065368 2013-02-12 17:59:29

+0

嗨,我修復了我的問題,我在xf上設置了自己的位置,我假設要做myPosition.y + = xf; – user2065368 2013-02-12 18:04:46