V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Game Engines
Unreal Engine
MyCryENGINE
xdedm
V2EX  ›  游戏开发

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

  •  
  •   xdedm · 2015-12-16 19:28:52 +08:00 · 4546 次点击
    这是一个创建于 3025 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    自己弄也很麻烦啊
    linhua
        8
    linhua  
       2015-12-16 20:13:05 +08:00
    从原理来看:
    算出每一帧(一般 1 秒 24 帧)的坐标不就行了。不过如果考虑到程序的执行时间,可能需要延迟一下,以实现下一帧的时间点到了,再绘制这一帧的数据的功能。这就复杂了。
    lizhenda
        9
    lizhenda  
       2015-12-16 20:23:11 +08:00
    说白了就是直接 setPosition ,通过公式算每帧的位置然后 update 里面更新。
    其实最简单的使用 box2d , cocos2d-x 有 2 个支持的物理引擎,你可以自己选择。
    噢,对了, 3.x 默认整合物理引擎到 Physics 里面了( Scene::createWithPhysics())你可以自己百度
    czk1997
        10
    czk1997  
       2015-12-17 07:27:36 +08:00
    没有外力作用的情况下……
    这不就是斜抛运动么……
    当然你要考虑空气阻力,这个不是特别好算…………
    据形状不同,速度不同,空气阻力会变……
    但是变化不会特别大,所以可以考虑设置个定值或者微弱的递减……
    regeditms
        11
    regeditms  
       2015-12-17 09:18:37 +08:00
    用贝塞尔曲线 实现一个抛物线轨迹,然后让纸团运行吧,简单是这样处理。
    Comdex
        12
    Comdex  
       2015-12-17 09:50:04 +08:00
    搞安卓么?安卓里有个贝塞尔曲线的方法。。。。。
    xdedm
        13
    xdedm  
    OP
       2015-12-17 11:22:31 +08:00
    贝塞尔曲线的却可以描绘曲线,但是每次仍纸团的角度不一样(或者考虑风速不一样), 对应贝塞尔曲线需要选取的控制点也每次都不一样, 所以这里就有每次控制点选取的问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3239 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 12:11 · PVG 20:11 · LAX 05:11 · JFK 08:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.