[程式] UE4 ProjectileComponent的初始速度設定

作者: yekdniw (yekdniw)   2017-12-28 01:42:15
網頁版
http://yekdniwunrealengine.blogspot.tw/2017/12/projectile-movement-
componentinitial.html
縮短網址
https://goo.gl/oGhBm2
最近在使用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設回去。
作者: damody (天亮damody)   2017-12-28 08:51:00
123

Links booklink

Contact Us: admin [ a t ] ucptt.com