回覆列表
  • 1 # lanfengz3

    “如何讓一個角色跟著另一個角色”這個問題

    我想了很久。得出的第一個結論是“

    延遲執行動作

    。所以初期的想法是,

    在按下方向按鍵時,第二個角色延遲執行。

    初期的指令碼如上面的兩個圖,

    設定了全域性變數

    delay

    調整延遲時間,

    區域性變

    t

    的預期作用是在克隆之後加

    1

    ,以增加延遲時間(其實,還沒有確定克隆之

    t

    是初始值還是當前值,後來試過才知道是當前值的)

    蛇身的指令碼中,

    在按下方向鍵後,

    延遲了一會兒。

    在只有這兩個角色的時候,

    跟隨的效果還是不錯的。

    但是問題多多,

    比如無法適應快速的操作,

    特別是後來

    增加了克隆模組後,

    常常會有部分蛇身,

    提前或者延遲了拐彎時間,

    以至於蛇身

    支離破碎。

    第二個想法是,跟隨就是“

    面向主體移動

    。直接使用“動作”中“面向

    這一模組,

    免去延遲,

    讓蛇身與蛇頭保持同樣的速度,

    只在蛇身太接近蛇頭的時

    候,讓蛇身放慢速度再次拉開距離(拐彎時會縮短距離)

    蛇頭

    蛇身

    食物

    同樣有區域性變數

    t

    在克隆之後加

    1

    ,不過原來的全域性變數

    delay

    延時,在

    這裡變成了全域性變數

    d

    距離。

    因為無法透過

    “面向

    這一模組跟著前一個蛇身,

    所以只能是所有蛇身都跟著蛇頭,只是距離不同。

    其實,我是蠻喜歡這個效果的,在轉彎的時候,蛇身弧線跟著蛇頭,看起來

    自然一點。但是,同樣也有問題:在蛇身增加時,蛇頭直線運動時,後面的蛇身

    都是歪著平移的,整體看起來像是在水上漂,而不是爬;另外,可以想象當蛇身

    數量增加到一定的時候,最後一截蛇身到蛇頭的距離超過了舞臺的寬度一半時,

    就會出現各種重疊。如果能讓後一段蛇身跟著前一段的蛇身就好了,哎

    ~

    第三個想法,跟隨是“

    再一次走過前任走過的路

    。這樣的情況下,首先要

    做的就是記錄前任走了哪些路。

    直線的路,

    沒什麼好記錄的,

    重點記錄的是在哪

    裡拐彎,

    拐向了哪邊。

    於是這裡就用到了連結串列。

    要儲存的資料有拐彎時的

    X

    座標、

    Y

    座標及方向,所以用了三個連結串列。蛇頭在拐彎時寫入連結串列,最後一截蛇身(蛇

    t

    (相當於是蛇身的編號)

    ,及全域性變數

    tail

    (每多一截蛇身就加

    1

    )來判斷是否是蛇尾。

    同時為了方便控制,

    增加了一個

    flag

    變數,

    這樣就可以只用空格鍵來控制遊

    戲的開始和結束。

    蛇頭

    在這裡嘗試了使用新建模組的功能,新建了一個模組用來儲存拐彎點的

    X

    Y

    座標及方向。

    下載文件到電腦,查詢使用更方便

    1下載券 656人已下載

    下載

    還剩6頁未讀,繼續閱讀

  • 中秋節和大豐收的關聯?
  • 當代鋼琴家排名?