看板 GameDesign 關於我們 聯絡資訊
網頁版 http://yekdniwue.blogspot.tw/2017/12/projectile-movement-componentinitial.html 最近在使用projectile movement component (以下簡稱PMC)的時候遇到一個問題 如果一個Actor掛了一個PMC來做移動的運算,但是這個移動的運算可能是由事件觸發, 而且移動的初速度可能也是一個變數,根據事件當時計算的結果會有不一樣的初速度。 然而經過測試發現有以下幾個問題: 1. 只有在Actor的construction script 或是PMC的default值設定initial speed才會 生效,其他事後的設定都是無效的。 [圖1] 在default值設定初始速度,有效。 [圖2] 在Construction Script設定初始速度,有效。 [圖3] 在BeginPlay或任何其他地方設定初始速度,無效,會以construction script或是 default值設定的值為準。 2. 對PMC disable component active之後再enable component active會影響到整個 移動的運作。 以上方的圖舉例初速度是1500,第一次active會用1500的速度噴出去,可是如果 disable active之後再enable,速度就會變成0。 有關第一點,追查原始碼之後才發現初始速度只有在InitializeComponent的時候使用 其餘程式碼都沒用到這個值,也間接證實了比BeginPlay早呼叫的Construction Script 設值是有用的。因為呼叫時間的先後順序應該是 Construction Script -> InitializeComponent -> BeginPlay。 但是有了這段code之後也代表initial speed其實可以自己處理,就如同程式碼 說明的一樣。只是把目前的velocity乘上 speed而已。 所以下圖的寫法等同於設定初速度~(為了偷 懶safeNormal我就不在圖中作了) [圖4] 第二點的話,推測是停掉之後velocity被設為0,所以再開啟的時候速度也被重設了。如 果想要延續停掉前的速度,可能要自己記下來,然後在重新開啟的時候重新把之前的 velocity設回去。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.116.41.55 ※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1514396537.A.0DE.html
damody: 123 12/28 08:51
※ 編輯: yekdniw (59.120.146.90 臺灣), 07/15/2020 11:08:48