我有一个称为箭头的图像。我想在按下空格键时射箭。我通过使用已经拥有的角度来计算velx
和vely
来做到这一点。
velx = math.cos(angle)*10
vely = math.sin(angle)*10
我在图片的x坐标上添加了velx
,在图片的y坐标上添加了vely
,因此我可以拍摄箭头。
现在,我想将vely
加速-9.8
。我该怎么办?
答案 0 :(得分:2)
哦,经典的2D游戏物理!让我们考虑一下一切
米和秒,因为这就是你的引力常数-9.8
看起来像。
所以您的位置(以米为单位)
posx = 0
posy = 0
您的速度(以m / s为单位),已经瞬时 加速到现在的速度(即弓箭手的手臂向箭头施加了10 m / s的速度),
velx = math.cos(angle) * 10
vely = math.sin(angle) * 10
您的重力(以m / s ^ 2为单位)
gravx = 0
gravy = -9.8
所以现在在您的物理模拟循环中,对于每一帧,您要做的就是
timestep = 0.1 # seconds to simulate this frame; this depends on FPS, etc.
# move the object according to its velocity
posx += velx * timestep
posy += vely * timestep
# apply acceleration based on gravity (you could add wind, etc. here)
velx += gravx * timestep
vely += gravy * timestep
您可以在可汗学院的 令人震惊的Pixar in a Box series。