Haskell 网络中的跳跃力学

Haskell 网络中的跳跃力学,haskell,reactive-programming,frp,arrows,netwire,Haskell,Reactive Programming,Frp,Arrows,Netwire,我想我需要一些激励来实现这一点,我在一般的平台游戏机制方面并没有真正的经验 无论如何,我的玩家形象到目前为止有以下特点: movePlayer = proc p -> do let gravity = 100 sx <- keySpeed GLFW.LEFT GLFW.RIGHT 500 -< () dy <- integralLim_ collision 0 -< (gravity, p) dx <- integralLim_

我想我需要一些激励来实现这一点,我在一般的平台游戏机制方面并没有真正的经验

无论如何,我的玩家形象到目前为止有以下特点:

movePlayer = proc p -> do
    let gravity = 100
    sx <- keySpeed GLFW.LEFT GLFW.RIGHT 500 -< ()
    dy <- integralLim_ collision 0 -< (gravity, p)
    dx <- integralLim_ collision 0 -< (sx, p)
    returnA -< (sx, sy)
    where
        keySpeed k1 k2 s = onKey k1 (-s) <|> onKey k2 s <|> pure 0
        collision = undefined -- collision with the world
movePlayer=proc p->do
让重力=100

sx首先,请注意,积分适用于元组:

(x, y) <- integralLim_ f (x0, y0) -< ((dx, dy), w)

(x,y)真的无法让
pos
工作。。。用正确的箭头表示法是什么?@LambdaDusk:对不起,我的失败。我忘了初始位置/速度。答案已编辑。如果我一直按空格键,则此选项有效。如果我只是轻敲它,什么也不会发生,按住它会让精灵飞起来。
gravity = pure (0, -9.8)
jump    = pure (0, 1000) . holdFor 0.1 (keyPressed space) <|> pure (0, 0)

pos = integralLim_ collision p0 . integral_ v0 . (gravity ^+^ jump)