發表文章

目前顯示的是 12月, 2017的文章

Projectile Movement Component的initial speed 初始速度設定

圖片
最近在使用projectile movement component (以下簡稱PMC)的時候遇到一個問題 如果一個Actor掛了一個PMC來做移動的運算,但是這個移動的運算可能是由事件觸發,而且移動的初速度可能也是一個變數,根據事件當時計算的結果會有不一樣的初速度。 然而經過測試發現有以下幾個問題: 1. 只有在Actor的construction script 或是PMC的default值設定initial speed才會生效,其他事後的設定都是無效的 。 在default值設定初始速度, 有效 。 在Construction Script設定初始速度, 有效 。 在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我就不在圖中作了) 第二點的話,推測是停掉之後velocity被設為0,所以再開啟的時候速度也被重設了。如果想要延續停掉前的速度,可能要自己記下來,然後在重新開啟的時候重新把之前的velocity設回去。