扔纸团游戏里面纸团的运行曲线是怎么实现的?

2015-12-16 19:28:52 +08:00
 xdedm

想弄一个扔纸团类似的小游戏,不太清楚纸团飞出去曲线的设计方法,有谁知道指教一下。

4583 次点击
所在节点    游戏开发
13 条回复
xupefei
2015-12-16 19:37:55 +08:00
这有什么指教的啊,受力分析把运动分为垂直和水平两个速度,垂直方向加速度是重力,水平方向速度恒定。如果考虑‘空气阻力的话另说。
具体的公式请参考初高中物理课本…
jamesxu
2015-12-16 19:38:03 +08:00
高中物理,抛物线
l6751902
2015-12-16 19:39:07 +08:00
ax^2+bx+c=y
Daniel65536
2015-12-16 19:43:18 +08:00
高中物理基本知识……

你需要两个变量 Vx Vy ,就是 x 方向速度与 y 方向速度,然后一个重力加速度 g 。
每帧纸团横向运动 Vx 个像素,纵向移动 Vy 个像素,然后给 Vy 加上 g 以模拟重力加速度对 y 方向速度的影响。
还可以进一步模拟空气阻力,高速情况下阻力与物体运动速度的平方成正比,低速情况下阻力与物体运动速度成正比,模拟同样是每帧计算阻力大小算出下一帧的新速度。
xdedm
2015-12-16 19:54:08 +08:00
额 如果具体到 cocos2dx 引擎该是怎么样的呢? 横向匀速,纵向加速,横向直接 moveto ,纵向的匀加速的过程怎么模拟呢?
ETiV
2015-12-16 19:54:48 +08:00
加个物理引擎吧, 不用你自己算.
dqh3000
2015-12-16 19:55:06 +08:00
建议使用一个物理引擎

然后只要提供初始加速度就自己计算了

自己弄也很麻烦啊
linhua
2015-12-16 20:13:05 +08:00
从原理来看:
算出每一帧(一般 1 秒 24 帧)的坐标不就行了。不过如果考虑到程序的执行时间,可能需要延迟一下,以实现下一帧的时间点到了,再绘制这一帧的数据的功能。这就复杂了。
lizhenda
2015-12-16 20:23:11 +08:00
说白了就是直接 setPosition ,通过公式算每帧的位置然后 update 里面更新。
其实最简单的使用 box2d , cocos2d-x 有 2 个支持的物理引擎,你可以自己选择。
噢,对了, 3.x 默认整合物理引擎到 Physics 里面了( Scene::createWithPhysics())你可以自己百度
czk1997
2015-12-17 07:27:36 +08:00
没有外力作用的情况下……
这不就是斜抛运动么……
当然你要考虑空气阻力,这个不是特别好算…………
据形状不同,速度不同,空气阻力会变……
但是变化不会特别大,所以可以考虑设置个定值或者微弱的递减……
regeditms
2015-12-17 09:18:37 +08:00
用贝塞尔曲线 实现一个抛物线轨迹,然后让纸团运行吧,简单是这样处理。
Comdex
2015-12-17 09:50:04 +08:00
搞安卓么?安卓里有个贝塞尔曲线的方法。。。。。
xdedm
2015-12-17 11:22:31 +08:00
贝塞尔曲线的却可以描绘曲线,但是每次仍纸团的角度不一样(或者考虑风速不一样), 对应贝塞尔曲线需要选取的控制点也每次都不一样, 所以这里就有每次控制点选取的问题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/244011

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX