碰撞通道的确定
通道的类型
l Object Type(对象类型)
n 通俗的讲就是自己是什么,每一个可以碰撞的对象都会有一种碰撞类型,并且定义了它和别的对象类型之间的交互响应,主要是用来处理物体和物体之间运动的时候碰撞的关系
l Trace Type(踪迹类型)
n 这个是用来做射线检测,光线追踪功能。比如打了一条射线这个射线根据你想要检测到的类型做返回HitResult,最常用的比如武器的trace
l 其中每一种对象类型或者trace类型就是一条通道
通道的响应类型
l Collision Type(碰撞类型)
l ignore
l Overlap
l Block
创建新的通道
l Edit Menu(编辑菜单) -> Project Settings(项目设置) -> Collision(碰撞)
点击 New Object Channel(新建对象通道)... 或 New Trace Channel(新建踪迹通道)
选择一个 Default Response(默认响应) 并点击 Accept(接受)
最多可以有18个自定义对象响应通道或自定义踪迹响应通道
Preset
预设置的各个对象之间的碰撞信息,比如说Worldstatic与其他类型的对象类型和trace类型之间的响应关系
l Name:当前预设通道的名称
l CollisionEnable:碰撞类型
n NoCollision:没有任何的物理模拟,而且控件射线的检测也不会触发
n QueryOnly:可以进行各种trace,sweep,Overlap事件的触发,但是不会进行物理模拟,简单的讲就是运动时不会产生任何碰撞。但是静止时是由碰撞的
n Physics Only:表示只能进行物理碰撞与运动模拟,但是不会触发任何事件
n QueryAndPhysics:既有物理模拟也有事件触发
现有类型的通道确定
类型 | Object Type | Preset | Collision Enable |
---|---|---|---|
房间和家具 | WorldStatic | BlockAll | Collision Enable |
地形(LandScape) | WorldStatic | BlockAll | Collision Enable |
树木 | WorldStatic | BlockAll | Collision Enable |
人物CapsuleComponent | Pawn | PawnCapsule(Weapon是ignore,item是overlap,剩下的是Block) | Collision Enable |
人物Mesh | CharacterMesh | Custom(all Is Ignore) | No Colision |
人物HitBox | WorldDynamic | HitBox(Trace中Weapon和Visibility是Block,剩下的都是Ignore) | Querly Only |
载具Mesh | Vehicle | Vehicle | Collision Enable |
载具BoxComponent | Vehicle | VehicleBox | Querly Only |
载具BoxComponentDamage | WorldStatic | OverLapAll | Querly Only |
载具轮胎HitBox | WorldDynamic | HitBox(Trace中Weapon和Visibility是Block,剩下的都是Ignore) | Querly Only |
碰撞制作( 目前没有制作精细程度的标准)
制作碰撞的几种方式
l 引擎中制作(直接上官方文档)
n https://docs-origin.unrealengine.com/latest/CHN/Engine/Physics/Collision/Reference/index.html
l 建模软件中制作
n UBX_[RenderMeshName]_## 在Max中使用 Box(盒子) 对象来创建盒式碰撞
n USP_[RenderMeshName]_## 球体可以使用 Sphere(球体) 对象类型进行创建
n UCX_[RenderMeshName]_## 凸面体可以是任何完全闭合的凸面 3D 图形
n https://docs.unrealengine.com/latest/CHN/Engine/Content/FBX/StaticMeshes/index.html
树木
l 在引擎中添加一个简单的box,只需要设置树叶之下的树干就可以(一定要比角色的高度要高)
地形
l 地形生成的时候默认生成了物理目前只提供了两个参数调整物理的级别(影响精度和性能),值调整的范围是0-5,建议先不去调整,使用默认的即可
角色
l CapsuleComponent设置玩家的高度和范围
l 分别在头部,四肢,躯干部分添加hitBox,以tag区分
l 如果没有布娃娃状态的话,建议是不设置物理资源(目前的武器伤害默认走的是物理资源中的物理材质,这块会造成trace通道不能独立出来,而且是表现和伤害判断柔和到了一起,不太确定是否合理,建议使用hitBox)
载具
l 首先创建物理资源(以下的操作都是在物理资源中进行的)
l 轮子添加CapsuleComponent 物理类型 Physics Type 一定要设置成Kinematic
l 车体本身,首先是有一个车体的Staticmesh,这个mesh中设置碰撞导入到车体的物理资源中
n Staticmesh中的碰撞设置有几种方式
u 在引擎中手动添加简单的碰撞比如box,然后使用简单碰撞组合成车体的碰撞
u 使用引擎自带的工具,选择精度和最大顶点数,自动生成碰撞
u 在建模软件中如3DsMAX中创建碰撞模型,然后随同渲染网格体一起导入到FBX文件中,在FBX文件导入的时候,这时候会根据建模中设定的碰撞模型生成碰撞
建筑和复杂物体
l 美术在建模软件中如3DsMAX中创建碰撞模型,然后随同渲染网格体一起导入到FBX文件中
简单物件
l 在引擎中手动添加简单的碰撞比如box,然后使用简单碰撞组合成车体的碰撞
l 也可以美术建模的时候创建简单的碰撞模型,随着FBX文件导入生成碰撞
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。