先直接上程式圖(?)
先是「跳起來」的部分,暫時用AddForce來呈現
但這種跳躍運作起來會比較單調
因為它是按下去時,就依固定力度來起跳,亦即每次基本上跳躍都是相同的
比較有趣的做法是「按越久跳越高(當然有上限)」
不過嘛……雖然知道理論,但還沒有時間實作(゚∀。)
整個遊戲現在都一堆bug了,寫個新功能增加風險可不是好事##
然後是「掉落」的部分
因為會構成「掉落」這狀態的情況,不只是起跳之後,一般走路時可能也會從斷崖之類的地方往下掉
所以這裡是計算主角的y值,少於0時就會播放動畫
至於那個IsOpenUmbrella(第一個藍框),則關係到遊戲的「雨傘系統」
那也是可以另開一篇文章了所以之後補充w
接著是「站在地上」
主要用來作動畫緩衝,亦可以說是「掉落」和「待機」之間的補間動畫
同時也重置起跳和掉落的動畫狀態
而那第二個藍色框框,是要防止玩家不斷按跳躍鍵,角色也不斷地跳起來
咦?那這樣的話,其實只要OnGround就好了吧?為甚麼還要有那個if判斷式?
在那之前要先說說OnGround的判定法
我是以Linecast的方式,判定主角有沒有站在地上
它的用法是,偵察A和B之間有沒有Collider,再回傳一個Y/N回來((好像是
而這裡的AB position是:主角自身的座標,和一個主角的子物件「GroundCheck」
GroundCheck的座標放在y = -0.1f (可自行調整)的地方
所以,它偵察的是「主角座標,主角座標-0.1f(-的數字等同玩家與GroundCheck之間的距離)」之間有沒有東西
這個「東西」,則是在說「Layer = Ground」的Collider,亦即地板
所謂的OnGround就是這樣判定的
那這個判定怎麼影響到跳躍呢?
就是:當起跳經過一些台階時,很可能會觸發到OnGround,但明明那時只是剛起跳不久而已。若在此情況再按下跳躍鍵,主角就會二段跳了ヽ(✿゚▽゚)ノ
對現階段來說這不是好情況ww
因此多加的這個if判斷,是讓主角在平地時(不論是在待機還是在走直路),才可以跳躍
嘛不過,我也不確定這方法對與否就是wwww
最後的最後啦
if(OnGround)那裡,有一行是gravityScale = 1.5f
那是在持續更改玩家的重力,但其實這東西只要改一次就好了
所以,這行其實有點不太妙XDDD
我也是打這篇文章時才發現這東西www
之後應該會改掉_(:3」
沒有留言:
張貼留言