我想在 Yampa 有一个粒子场。单个粒子应该只是沿直线移动,但取决于给定的角度。该角度和移动速度会根据玩家的速度和角度而变化。我不知道如何更好地解释,我正在开发类似这个游戏的东西。
无论如何,我现在的代码如下所示:
star :: (Float, Float) -> SF (Float, Float) (Float, Float)
star p0 = proc (vel, a) -> do
rec
v <- integral -< vel *^ (cos a, sin a)
p <- clampS ^<< (p0 ^+^) ^<< integral -< v ^+^ p
returnA -< p
clampS s@(x, y) | x > 1 = (x-2, y)
| x < (-1) = (x+2, y)
| y > 1 = (x, y-2)
| y < (-1) = (x, y+2)
| otherwise = s
vel
是当前速度,a
是当前角度。但是粒子以奇怪的方式移动。(完整代码在这里
不幸的是,我确信我的想法是错误的,但我还没有弄清楚如何做到这一点,尤其是如何integral
正确使用。
也许有人可以给我一些提示。