2

ヤンパにパーティクルフィールドが欲しいです。単一の粒子は直線で移動する必要がありますが、指定された角度によって異なります。その角度と移動速度は、プレイヤーの速度と角度に応じて変化します。どう説明したらいいのかわからないので、このゲームに似たものを開発しています。

とにかく、今のところ私のコードは次のようになります:

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正しく使用する方法をまだ理解できていません。

多分誰かが私にいくつかのヒントを与えることができます。

4

1 に答える 1

1

@martingwからのちょっとしたヒントで、私はこれを調理することができました。これは私が探していたものです。

star :: (Float, Float) -> SF (Float, Float) (Float, Float)
star p0 = proc (a, vel) -> do
    let (vx,vy)  = vel *^ (cos a, sin a)
    p <- clampS ^<< (p0 ^+^) ^<< integral -< (-vx,vy)
    returnA -< p

clampS (x, y) = (x `fMod` 800, y `fMod` 600)
于 2012-07-21T15:58:56.130 に答える