2011-09-01 5 views
6

スクラッチでアニメーションを滑らかにするにはどうすればよいですか?主に、右の矢印を押したままにすると、目立たないジッタなく右に移動するようにします。加えて、スクラッチは、あなたが矢印を持っているときにもう一度繰り返すのを待ちます。どのように私はこのものを滑らかにすることができますか?スクラッチでスプライトモーションを滑らかにする

答えて

2

スクラッチでは、長距離または間隔のあるGlideを使用すると非常に滑らかな動きを得ることができます。ただし、この方法の欠点は、スプライトがエッジや衝突の検出などの検出を実行する前に、Glide操作を終了する必要があることです。これはしばしば望ましくないことです。

キーを押したときの小さな遅延は、実際にはキーボードのリピートレートに直接関係しています。キーボードのキーを押すと、そのキーイベントが送信されますが、リピートが始まる前にわずかな遅延があります。システムのキーボードリピートレートを変更する方法が見つかると、これはスクラッチに引き継がれます。

あなたがスクラッチで行うことができますどのくらいの最適化には限界があります。結局のところ、非常に基本的な(しかし非常に面白い)エントリーレベルのプログラミング環境です。 :)矢印は 繰り返し 移動(またはグライド)を押したとき

「が押されていない矢印」まであなたが行うことができ

2

矢印Aではないまでは、それが設定された間隔で押すキーをチェックしません

を押します動きがスムーズになります。

3

私はそれが古い質問であることを知っています。しかし誰かが解決策を探している場合は、このスクラッチプロジェクトをチェックしてください:http://scratch.mit.edu/projects/276298/

永遠のループを追加し、矢印キーが押されているかどうかをチェックしてください。そうであれば - 移動する。 この方法では、キーボードのリピート率には依存しません。

1

あなたがこれを行うことができます:

右矢印が押された場合に毎回チェックし、もしそう、それは一つの変数 xsを変更
When flag pressed 
forever 
    if (right arrow pressed?) then 
    change xs by 1 
    xs = xs * 0.8 
    change x by (xs) 

。その後、xsに0.8を乗じることで、値が見た目に減衰します。

次に、スプ​​ライトのxをvar xsで変更します。

+0

**警告:コードに誤りがあります!** 'xs'のリセットはどこですか? 'xs'の値は、' 1'から '0.8 'に' 0.64'から '0.512'から' 0.4096'まで非常に素早く進みます...それは1から始まると仮定しています! 'set [xs v] to(number)'がないので、値は**リセットされません**! – wizzwizz4

+0

コードが機能します。 'xs'の値は、右矢印キーが押されていないときに指数関数的に小さくなります。したがって、キーが押されていないときは 'xs'がゼロに近づき、右矢印キーが押されているときは値4(0.8 /(1-0.8)で計算されます)になります。 –

0

あなたができることの1つは、変数とカスタムブロックを使用して動きを滑らかにするための引数を作ることです。スピードxと呼ばれる変数を追加し、永遠にXをスピードXで変更します。スナップショットやサンプルはありませんが、カスタムブロックのスクリプトを使って滑らかに滑らせることができます。

関連する問題