2

ちょっとしたゲームを作っています。2D ゲームで、主な機能は重力の方向を変更することです。なんとか方向を変えることができたので、プレイヤーは重力の方向に「落ちる」ようになりました。しかし、今はプレーヤーを「安定」させたいと思っています。2秒。基本的な回転を実装しましたが、それはプレーヤーの角度を即座に変更します。回転が「スムーズ」になるように、ステップを小さな断片に「スライス」したいと考えています。例えば。「期間」となる入力数値に関連して、デルタ時間から計算された小さなステップで 180° から 0° に変更したい

私はラジアンに慣れていないので、使用できません。

重力の方向は、world.gravitydir 変数を使用して設定できます。1、2、3、4 のいずれかです。1 は通常の重力「下」 2,4 は「左」と「右」、3 は「上」 矢印キーを使用して重力方向を手動で変更する「開発コマンド」もあります

これは、プレーヤーを逆さまから通常の状態にスムーズに回転させるための私の試みです。

function rotatePlayer(dt)
deg1 = player.rot -- player's current rotation
step = 0 
        deg2 = math.rad(0) -- desired rotation

        step = (math.deg(deg1) - math.deg(deg2))*dt

            for i = deg1, deg2 do
                player.rot = player.rot - math.rad(step)
                step = step - dt
            end
end

playerrotation関数はgravity.luaとdevコントローラーにあり、プレイヤー描画関数はplayer.luaにあります

ソース: http://www.mediafire.com/download/3xto995yz638n0n/notitle.love

4

2 に答える 2

0

ペーストビンStackoverflow Love2d gameの player.lua に変更を加えました。固定時間ではなく固定レートでプレーヤーを回転させます。後者を行うには、rottime を一定にします。

于 2013-10-26T18:49:09.470 に答える