Trigger Volume
会引发执行一系列代码
范例1: 重力达到60kg, 灯的颜色从白色改为红色
Collision Volume
告诉物理引擎什么东西撞到了什么东西
可以模拟物理效果
如何不让玩家穿门而过
右键门, 点击 edit SM_door
点击上方菜单栏 collision
, 点击 add box collision
注意: 为了程序运行流畅, 应该尽量减少 collision volume 的 polygons
保存, 退出编辑窗口
自定义player
- 把默认 player actor 转化成 blueprint class
- 把默认 gamemode 转化为 blueprint gamemode
- 设置新的蓝图 gamemode
- 在新的蓝图 gamemode 里设置新的 player actor
拿起物体
-
给需要拿起的物体开启 Physics 中的 Simulate physics 属性
会导致该物体的 Collision 的 Collision Presets 属性变为 Physics Actor
导致该物体对的 Collision 的 Object Type 属性变为 Physics Body
-
给自定义player的蓝图加上如下 component: Physics Handle
-
在 Grabber 的 header 文件里加入私有属性 PhysicsHandle, 并把初始值设置为
nullptr
-
在 Grabber 的 header 文件里添加私有属性
UInputComponent* InputComponent
, 并初始化为nullptr
-
创建方法
Grab();
和Release();
-
创建一个玩家的输入映射: Project settings -> Enging -> Input -> Action Mappings
该映射起名为 Grab. 映射的键位为 shift 或 右键
-
在 Grabber 的BeginPlay 方法中, 给 InputComponent 赋值, 然后把名为 Grab 的映射和向 Grab() 方法绑定在一起
-
分别写好 Grab 和 Release 方法
设置视线水平高度
待解决问题: 如果 player 是默认的圆形, 则拿着物体撞到墙的时候回滚来滚去. 玩家就会感觉主角在自己平移