六一的部落格


关关难过关关过,前路漫漫亦灿灿。




概览

虚幻编辑器

  • 在虚幻编辑器使用控制台 Console
  • 碰撞选项
  • 设置对其他类型物体的反馈
  • 设置对通道的反馈
  • 碰撞时产生重叠事件
  • 碰撞时产生碰撞事件
  • 自定义物体类型

碰撞

物体之间的交互,会发生以下情形

-
Ignore 不会发生碰撞
Overlap 重叠: 可以发生碰撞, 允许通过, 可以产生重叠事件
Block 阻挡:可以发生碰撞, 形成阻碍, 可以产生碰撞事件

游戏角色拥有Capsule组件, 用以处理碰撞相关逻辑: 如游戏角色跳起后会落到地面, 而不是穿过地板; 可以操控其上楼梯; 和另一个游戏角色碰撞, 而不是穿过他


轨迹计算

Logical Trace

给定轨迹的端点, 计算场景中与轨迹相交的物体

通过轨迹计算得到射击击中的目标


在虚幻编辑器使用控制台

  1. 打开控制台 `

    运行时, 按下 Apostrophe Sign , 在视口下方会出现命令行, 可以输入调试命令

  2. 设置打开控制台的快捷键

    项目设置 > Engine > Input > Console > Console Keys


输出每秒帧数

stat fps
  1. 在右上方显示


  2. 1秒将近40帧

    1s / 25ms = 1000ms / 25ms = 40

输出GPU统计数据

stat GPU    



隐藏Debug信息

输入相同命令, 或

stat none

显示场景中的碰撞

show collision    
  1. 可以看到Character的Capsule组件;碰撞组件纯逻辑, 在游戏中默认不可见


  2. 再次输入隐藏


碰撞选项

碰撞选项


设置游戏角色穿过物体

在场景中添加Sphere和Cube Place Actors > Shapes


设置游戏角色Capsule组件的碰撞选项

BP_STUBaseCharacter > Capsule Component > Details > Collision

  1. 碰撞预设默认为Pawn


  2. 将碰撞预设置为Custom


设置Sphere的碰撞选项

  1. 将碰撞预设设置为Custom

  2. 允许游戏角色穿过

    对物体类型的碰撞反馈中, 设置对Pawn执行Overlap Collision Responses > Object Responses > Pawn, 勾选Overlap



设置Cube的碰撞选项

  1. 设置 Collision Preset 为Custom

  2. 允许Pawn穿过



查看


游戏角色可以穿过Sphere和Cube


游戏角色与物体碰撞时, 镜头会放大, 这是Camera通道对于Block设置给出的碰撞反馈

  • 可以在SpringArm组件设置碰撞探测通道, 默认使用Camera通道
  • Camera组件作为SpringArm组件的下级组件, 是游戏角色的一部分, 此时也与物体碰撞
  • 之所以会放大镜头, 在于发生碰撞时要表示阻挡; 我们不应该看到已经穿过物体那部分

设置Camera通道忽略物体


查看SpringArm组件

BP_STUBaseCharacter > 选中SpringArmComponent > Details > Camera Collision > Probe Channel

SpringArm组件如何进行碰撞探测, 默认为Camera通道

Probe Channel
Camera

设置Camera通道忽略Sphere

Collision Responses > Trace Responses > Camera, 选择Ignore



查看: 游戏角色穿过Sphere时, 感官上正常


产生重叠事件: 输出Actor信息


在蓝图中处理事件

  1. 打开 BP_STUBaseCharacter > Event Graph
  2. Event ActorBeginOverlap 之后, 在屏幕打印 PrintString
  3. OtherActor作为PrintString输入, 实际输出产生碰撞的物体名称



为物体勾选发生碰撞时产生重叠事件

  1. Sphere

    Details > 勾选 Generate Overlap Events


  2. Cube

    Details > 勾选 Generate Overlap Events


查看日志



产生碰撞事件: 获取碰撞信息


为物体勾选发生碰撞时产生碰撞事件

选择Cube, 去到Details面板, 勾选 Simulation Generates Hit Events



在蓝图中添加事件

BP_STUBaseCharacter > EventGraph, 添加EventHit


补充: 要求物体与Cube的碰撞反馈互为Block,发生碰撞时,才会产生碰撞事件


自定义物体类型

项目设置 > Engine > Collision


创建物体类型Enemy

  1. New Object Channel


  2. 设置

    -
    Name Enemy
    Default Response Block


  3. 其他类型物体对Enemy采取Block


创建物体类型Geometry

  1. New Object Channel

  2. 设置

    -
    Name Geometry
    Default Response Ignore


  3. 其他类型物体对Geometry采取Ignore


查看游戏角色的碰撞选项

-
Enemy Block
Geometry Ignore



设置Cube

  1. 物体类型为Geometry
  2. 忽略Pawn



设置Sphere

  1. 物体类型为Enemy
  2. 阻挡Pawn



初识碰撞



概览

虚幻编辑器

  • 在虚幻编辑器使用控制台 Console
  • 碰撞选项
  • 设置对其他类型物体的反馈
  • 设置对通道的反馈
  • 碰撞时产生重叠事件
  • 碰撞时产生碰撞事件
  • 自定义物体类型

碰撞

物体之间的交互,会发生以下情形

-
Ignore 不会发生碰撞
Overlap 重叠: 可以发生碰撞, 允许通过, 可以产生重叠事件
Block 阻挡:可以发生碰撞, 形成阻碍, 可以产生碰撞事件

游戏角色拥有Capsule组件, 用以处理碰撞相关逻辑: 如游戏角色跳起后会落到地面, 而不是穿过地板; 可以操控其上楼梯; 和另一个游戏角色碰撞, 而不是穿过他


轨迹计算

Logical Trace

给定轨迹的端点, 计算场景中与轨迹相交的物体

通过轨迹计算得到射击击中的目标


在虚幻编辑器使用控制台

  1. 打开控制台 `

    运行时, 按下 Apostrophe Sign , 在视口下方会出现命令行, 可以输入调试命令

  2. 设置打开控制台的快捷键

    项目设置 > Engine > Input > Console > Console Keys


输出每秒帧数

stat fps
  1. 在右上方显示


  2. 1秒将近40帧

    1s / 25ms = 1000ms / 25ms = 40

输出GPU统计数据

stat GPU    



隐藏Debug信息

输入相同命令, 或

stat none

显示场景中的碰撞

show collision    
  1. 可以看到Character的Capsule组件;碰撞组件纯逻辑, 在游戏中默认不可见


  2. 再次输入隐藏


碰撞选项

碰撞选项


设置游戏角色穿过物体

在场景中添加Sphere和Cube Place Actors > Shapes


设置游戏角色Capsule组件的碰撞选项

BP_STUBaseCharacter > Capsule Component > Details > Collision

  1. 碰撞预设默认为Pawn


  2. 将碰撞预设置为Custom


设置Sphere的碰撞选项

  1. 将碰撞预设设置为Custom

  2. 允许游戏角色穿过

    对物体类型的碰撞反馈中, 设置对Pawn执行Overlap Collision Responses > Object Responses > Pawn, 勾选Overlap



设置Cube的碰撞选项

  1. 设置 Collision Preset 为Custom

  2. 允许Pawn穿过



查看


游戏角色可以穿过Sphere和Cube


游戏角色与物体碰撞时, 镜头会放大, 这是Camera通道对于Block设置给出的碰撞反馈

  • 可以在SpringArm组件设置碰撞探测通道, 默认使用Camera通道
  • Camera组件作为SpringArm组件的下级组件, 是游戏角色的一部分, 此时也与物体碰撞
  • 之所以会放大镜头, 在于发生碰撞时要表示阻挡; 我们不应该看到已经穿过物体那部分

设置Camera通道忽略物体


查看SpringArm组件

BP_STUBaseCharacter > 选中SpringArmComponent > Details > Camera Collision > Probe Channel

SpringArm组件如何进行碰撞探测, 默认为Camera通道

Probe Channel
Camera

设置Camera通道忽略Sphere

Collision Responses > Trace Responses > Camera, 选择Ignore



查看: 游戏角色穿过Sphere时, 感官上正常


产生重叠事件: 输出Actor信息


在蓝图中处理事件

  1. 打开 BP_STUBaseCharacter > Event Graph
  2. Event ActorBeginOverlap 之后, 在屏幕打印 PrintString
  3. OtherActor作为PrintString输入, 实际输出产生碰撞的物体名称



为物体勾选发生碰撞时产生重叠事件

  1. Sphere

    Details > 勾选 Generate Overlap Events


  2. Cube

    Details > 勾选 Generate Overlap Events


查看日志



产生碰撞事件: 获取碰撞信息


为物体勾选发生碰撞时产生碰撞事件

选择Cube, 去到Details面板, 勾选 Simulation Generates Hit Events



在蓝图中添加事件

BP_STUBaseCharacter > EventGraph, 添加EventHit


补充: 要求物体与Cube的碰撞反馈互为Block,发生碰撞时,才会产生碰撞事件


自定义物体类型

项目设置 > Engine > Collision


创建物体类型Enemy

  1. New Object Channel


  2. 设置

    -
    Name Enemy
    Default Response Block


  3. 其他类型物体对Enemy采取Block


创建物体类型Geometry

  1. New Object Channel

  2. 设置

    -
    Name Geometry
    Default Response Ignore


  3. 其他类型物体对Geometry采取Ignore


查看游戏角色的碰撞选项

-
Enemy Block
Geometry Ignore



设置Cube

  1. 物体类型为Geometry
  2. 忽略Pawn



设置Sphere

  1. 物体类型为Enemy
  2. 阻挡Pawn