iT邦幫忙

2024 iThome 鐵人賽

DAY 29
0
Mobile Development

用Flutter Flame做遊戲!Live!系列 第 31

掰掰!Getter/Setter。(如何設定物體移動方向?)

  • 分享至 

  • xImage
  •  

如何用穩定速度移動一個物體?
1.速度要穩定。
2.運動控制方法清晰穩定。
3.不能發生穿牆事件。
4.物理碰撞效果要穩定正常運作。

目前為止,「body.applyLinearImpulse」和「body.setTransform」都不合格。
「body.applyLinearImpulse」的速度不穩定,而且會發生「停不下來」的情況。
「body.setTransform」會導致穿牆,停下來後也會永久失去正常物理碰撞的能力。

正解是賦予「body.linearVelocity」一組Vector2。

問題是...

「body.linearVelocity」在程式庫中似乎是以getter/setter的編寫形式存在,而Flutter編譯後會將它轉成一組「參數」。
所以實際上使用Flame/Forge2D套件時,使用這組參數並不需要「a = body.getLinearVelocity」或「body.setLinearVelocity(a)」這樣的方式,而是單純的「a = body.linearVelocity」或「body.linearVelocity = a」即可!

傳統需要使用setter(setValue)的地方,會變成「apply(applyValue)」。
這似乎是種趨勢,而這趨勢已經主流到會開始看到有人寫文說「不要再自己的程式碼中寫getter/setter」,真是時代的眼淚啊!


今天是第二十九天,整個系列即將結束,進度遠遠沒達到一開始預期的要求。
但是也收穫了很多原本沒預期到會有的東西。

對了!
這系列的文比較像是「日記」「開發實際過程實錄」,而不是大家常見或喜樂閱讀的「百科式教學文」。
我希望寫作時的風格能夠輕鬆,能夠講講一些讓讀者讀過去沒壓力、但卻能留下深刻且有用的思維在腦海中的內容。

因為我是Google產品的使用者/開發者,所以我一向對Google在編寫線上API與教程時的不負責任態度很感冒。
Google永遠預設兩個條件:
1.我只寫Google自己內部開發者在開發Google自家產品時需要用到的技術就好,要做高端變化...我才不鳥你。
2.你們應該(必須)都經驗豐富了,所以不要期望我講解得太基本好懂。

既然Google不願意給的東西,那就靠自己去獲得、去分享。
這是我今年參加鐵人賽時給自己定下的一個目標。
希望這整個系列的文章可以持續完善,已達到這個目標,希望。

(這應該在開頭第一篇文章講的。)


上一篇
如何建立一個四十五度傾斜視角的地城?
下一篇
遊戲業到底出了什麼問題?
系列文
用Flutter Flame做遊戲!Live!32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言