天天看點

UE4碰撞專題筆記

目錄

碰撞基礎

碰撞查詢詳解

碰撞應用

碰撞基礎

  • 靜态網格體裡需要區分複雜碰撞和簡單碰撞
    • 簡單碰撞可以通過盒體、球體、凸包分解等算法生成,适用于簡單的單個模型
    • 複雜碰撞适用于組合的複雜模型,比如帶有門的一面牆需要部分阻擋部分不阻擋,可以将碰撞模式設定為将複雜碰撞用于簡單碰撞(影響性能)
  • 植被工具設定碰撞

    需要模型(Static Mesh)設定好碰撞的同時,植被工具裡設定植物的碰撞預設

  • Actor的碰撞是元件的碰撞, 觸發事件:on component hit
  • Actor包含多個元件時,碰撞之間可能會沖突,兩種碰撞元件:mesh,碰撞體積(包括角色自帶膠囊體和添加的碰撞盒)), 一般碰撞查詢都會使用碰撞體積而不是mesh的碰撞

碰撞查詢詳解

  • 碰撞查詢原理及規則推薦文章
    • https://zhuanlan.zhihu.com/p/60840943
    • https://blog.csdn.net/u012999985/article/details/51290096
    • https://blog.csdn.net/SittingAtThisMoment/article/details/80118748
  • 碰撞需要雙方配合(ignore overlap block),碰撞響應總共有三個選項:Ignore,Overlap,Block。顧名思義,Ignore忽略碰撞,Block就是阻擋,而Overlap與Ignore類似,不會産生阻擋,但會産生重合的事件通知。兩兩組合就有下面的情況:
    UE4碰撞專題筆記
    • 上圖可了解為"消極組合",以最低級的碰撞為準
  • CollisionEnabled決定了碰撞的用途
    • NoCollision:如果是這個,那麼其他碰撞設定都會被忽略不計,因為不再考慮碰撞了;
    • Query Only:僅用于查詢,不會考慮實體仿真;(射線&球體trace, 移動碰撞查詢)
    • Physics Only:僅用于實體仿真,不考慮查詢;(剛體的實體模拟)
    • Collision Enabled(Query and Physics):同時用于查詢與仿真
  • generate hit events和generate overlap events選項一般不會同時勾,既碰撞又重疊不合理。重疊用于檢測,碰撞用于阻擋或模拟實體
  • 自定義碰撞
    • 項目設定 - collison中可以自定義obj channel ,trace channel 和 collison preset
    • 直覺的了解,當你考慮的是對象移動時發生的碰撞,就用ObjectChannel(一開始UE的叫法是MovementChannels),如Pawn,StaticMesh;若考慮是射線/球形檢測時發生的碰撞,就用TraceChannel,如Weapon,Visibility
  • 藍圖動态設定碰撞
    • 碰撞響應 set collision response channel
    • 元件碰撞開關set enable collision
    • actor碰撞開關set actor enable
  • static mesh直接建立簡單碰撞或複雜碰撞,sketal mesh通過physical Asset編輯
  • UE4實體子產品原理分析 https://blog.csdn.net/u012999985/article/details/78242493

碰撞應用

  • 物品檢測
    • 給人物添加一個專門的item detector 碰撞體,設定級别為overlap,打開overlap事件通知
    • 當進入檢測範圍和離開時,begin overlap 、 end overlap分别觸發
    • 通過維護一個item數組儲存檢測到的物品清單
    • 根據是否實作了藍圖接口确定物品互動的級别:是否可互動?是否可拾取?
    • 具體的互動操作由物品自己實作的藍圖接口方法決定

繼續閱讀