我正在編程一個遊戲(JAVA),我想添加一些引力。我試圖找到一個公式或像這樣的東西,有非常不同的方式來做到這一點。我正在尋找一種能夠模擬真實重力並在物體接觸地板時能夠反彈的配方。對不起,我的英語不好。編程重力
編程重力
回答
在地球表面附近,所有下降的物體的重力加速度是恆定的(忽略空氣阻力)。公式xf = x0 + v0*t + (1/2)*g*t^2
將給出最終位置xf
給定初始位置x0
,初始(垂直)速度v0
和時間t
,該對象已經下降。 g
是一個常數,技術上取決於您的高程和其他因素,但大約是9.81 m/s
。
要做回彈,首先需要做一些碰撞檢測。當你檢測到一個碰撞時,你需要計算與該表面垂直的矢量(如果你的表面是一個水平面,容易),然後「反射」(排序)你的速度矢量到那個矢量(如果法向矢量直接指向上方,即,你從平坦的表面反彈,這相當於反轉速度v
)。請注意,爲了使其更逼真,您應該在彈跳之後應用一些阻尼:除了反映速度矢量外,還需要將其縮小(取決於彈跳之後的反射方式),這可能會減少一個或兩個組件)。爲了實際模擬這種情況,你可以使用多種技術:預先計算點列表,然後通過它們運行動畫,你可以使用歐拉方法或其他方法模擬所有這些數字正交技術(梯形法則,Runge Kutta等)。
thx,重力正在工作,但如果想讓精靈反彈你說我有理由需要反轉德速度,但如果我打印公式: – user2065368 2013-02-12 17:52:06
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
嗨,我修復了我的問題,我在xf上設置了自己的位置,我假設要做myPosition.y + = xf; – user2065368 2013-02-12 18:04:46
- 1. 加入重力的EditText編程
- 2. ESP8266 TCP到UART與重編程能力
- 3. 編程添加視圖的LinearLayout與重力和體重
- 4. Android:以編程方式設置LinearLayout的重力
- 5. 努力從Unix編程環境重現終端(1983)
- 6. 以編程方式爲RecycerView Android中的項設置重力
- 7. 的Android Layout_gravity(不是重力)和Layout_marginTop(不marginTop)編程
- 8. 以編程方式設置視圖的重力
- 9. 如何以編程方式設置對話重力?
- 10. 如何以編程方式更改LinearLayout的重力?
- 11. 重力加速有助於重力?
- 12. 重力和向心力
- 13. 的Javascript面向對象編程能力
- 14. 展開搜索編程魅力
- 15. 的Android TableLayout:彈力柱編程
- 16. 「可編程背景」的能力? (OS X)
- 17. MFC-編程禁用魅力酒吧
- 18. Python和Smalltalk - 元編程能力比較
- 19. 重力形式
- 20. horizontalscrollview重力
- 21. Android TextView重力
- 22. 微調重力
- 23. 力重載/加
- 24. 重力Cocos2D?
- 25. LinearLayout重力
- 26. 使右重力
- 27. 重力模擬
- 28. 設置重力
- 29. Pygame - 重力法
- 30. 相對重力
這不是問題,去谷歌「遊戲物理的Java示例代碼」 – Shark 2013-02-12 16:09:09
回彈是由碰撞檢測完成的。重力與它無關 - 只需修改對象的速度即可。 – nhahtdh 2013-02-12 16:09:46
y(t)= - 4.9 * t^2 + v_y_0 * t + y_0 – iamnotmaynard 2013-02-12 16:10:10