2011-09-01 82 views
6

如何平滑從頭開始的動畫?主要是,我想這樣,當你按住右箭頭時,它沒有任何明顯的抖動。另外,當你拿着一個箭頭時,劃痕讓你等待一秒鐘重複。我該如何平滑這些東西?從頭開始平滑精靈運動

回答

2

隨着劃痕,您可以使用Glide長距離或間隔得到非常光滑的議案。然而,這種方法的缺點是,在精靈可以做任何感測之前,必須完成滑翔操作,例如邊緣或碰撞檢測。這通常是不可取的。

您按下某個鍵時所說的小延遲實際上與鍵盤的重複速率直接相關。當您按下鍵盤上的某個鍵時,會發送該鍵盤事件,但在重複鍵入之前會有一個小的延遲。如果您可以找到一種方法來更改系統鍵盤重複速率,則這會轉變爲Scratch。

您在Scratch中可以做多少優化是有限制的。畢竟,它是一個非常基礎的(但非常有趣)的入門級編程環境。 :)

2

你可以做,直到「箭未按」

當箭頭按下 重複 移動(或下滑) 直到不​​按箭頭

那麼它不會檢查擊鍵在設定的時間間隔,使移動更順暢。

3

我知道這是一個古老的問題。但是如果有人正在尋找解決方案,請查看此臨時項目:http://scratch.mit.edu/projects/276298/

只需添加永久循環並在此循環內檢查是否按下箭頭鍵。如果是 - 移動。 這樣你就不會依賴於鍵盤重複速率。

1

你可以這樣做:

When flag pressed 
forever 
    if (right arrow pressed?) then 
    change xs by 1 
    xs = xs * 0.8 
    change x by (xs) 

也就是說如果按下右箭頭每次檢查,如果是,它改變了可變xs一個。之後,它將xs乘以0.8,所以價值很容易衰減。

然後它通過var xs更改精靈的x。

+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

你可以這樣做的一種方法是使用變量和自定義塊來使參數平滑運動。添加一個名爲speed x的變量,並使用速度X永久更改X.我沒有任何快照或示例,但可以使用自定義塊中的腳本順利滑動它。