目錄
效果
步驟
一、創建樣條網格體組件3D模型
二、實現點擊連線功能?
三、實現顯示兩點間距離功能
?
效果
步驟
一、創建樣條網格體組件3D模型
創建一個圓柱模型,這里底面半徑設置為10mm,高度設置為1000mm
注意該模型的坐標軸在如下位置:
然后設置模型的坐標為世界原點
二、實現點擊連線功能?
1. 將模型導入到UE中
給該網格體一個材質
對材質創建一個材質實例,調整參數自發光顏色和強度
2. 新建一個Actor藍圖,這里命名為“BP_Sphere”
該藍圖中只有一個球體組件,然后給該球體賦予上一步創建的材質實例
3. 再新建一個藍圖,這里命名為“BP_Spline”
打開“BP_Spline”,將根節點的可移動性設置為靜態
在事件圖表中,在事件開始運行后,添加一個樣條組件賦予到一個變量上,然后清除樣條組件上的所有的點,最后啟用輸入并顯示鼠標光標
4. 再新建一個藍圖函數庫,這里命名為“BPHL”
打開“BPHL”,添加一個新函數,這里函數命名為“射線檢測”
該函數邏輯如下:
5. 回到藍圖“BP_Spline”中,創建一個自定義事件,這里命名為“測量”,在該事件執行后,發出一條射線,當射線碰撞到某處,我們獲取到該處的位置,然后在該位置添加一個樣條點和一個球體,再將圓柱賦予到生成的樣條線上,再設置每一個樣條的起始和結束點
為控制樣條網格體的粗細,我們可以通過設置起始縮放和結束縮放節點實現(或者直接在“添加網條網格體組件”這個節點上,通過設置“Relative Transform”引腳來控制樣條網格體縮放),這里變量“SplineMeshSize”默認值設置為1
當鼠標點擊時調用自定義事件“測量”
6. 在關卡藍圖中創建藍圖“BP_Sphere”
此時效果如下所示:
我們發現樣條網格體的材質沒有顯示出來,這里需要打開對應的材質,勾選上“使用樣條網格體”
可以看到此時材質就正常顯示了
如果覺得球體太大可以在“BP_Spline”的事件圖表中適當縮小比例
三、實現顯示兩點間距離功能
1. 新建一個控件藍圖,命名為“WBP_Distance”,用于顯示每兩個樣條點之間的距離
打開“WBP_Distance”,添加“畫布面板”和“文本”控件,其中“文本”控件的錨點設置在中下,位置X位置Y均為0,尺寸X尺寸Y分別設置為100和40,對齊設置為(0.5,1),勾選“大小到內容”。最后設置“屏幕尺寸”為“所需”
在圖表中創建一個浮點型變量,這里命名為“Distance”
為文本控件的內容創建一個綁定函數
當變量Distance發生改變時,文本內容也會相應變化
2. 打開藍圖“BP_Spline”,先將第二步(實現點擊功能)中的節點折疊到函數
在“點擊連線”的邏輯后,將我們制作好的控件藍圖添加進來
至于控件藍圖顯示在場景中的哪些位置,應該是顯示在每兩個樣條點中間的位置
此時運行效果如下:
可以看到在上面的效果中,第一個點也出現了距離顯示,我們可以判斷一下當前生成的樣條點數量是否大于1,只有生成的樣條點數量大于1時才顯示控件藍圖
此時就不會在第一個點位置生成控件藍圖了
接下來就要設置距離的內容
在折疊的函數“F_點擊連線”中通過兩個樣條點的位置計算出向量差的長度,除100將cm轉為m
將結果提升為全局變量“Distance”
在事件圖表中,獲取到控件組件包含的控件藍圖,將該控件藍圖類型轉化為“WBP_Distance”,在修改控件藍圖中的變量“Distance”
此時我們就可以準確的計算出兩點之間的距離了,此時效果如下:
視頻鏈接:
https://www.bilibili.com/video/BV1tT4y1r7nD/?spm_id_from=333.788&vd_source=36a3e35639c44bb339f59760641390a8