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

看板GameDesign (遊戲設計)作者 (yekdniw)時間7年前 (2017/12/28 01:42), 編輯推噓1(100)
留言1則, 1人參與, 7年前最新討論串1/1
網頁版 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設回去。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.116.41.55 ※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1514396537.A.0DE.html

12/28 08:51, 7年前 , 1F
123
12/28 08:51, 1F
文章代碼(AID): #1QGzjv3U (GameDesign)
文章代碼(AID): #1QGzjv3U (GameDesign)