ちょっとしたゲームを作っています。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