UE4-Blueprint Class-Actor-开关门-盒子触发体

蓝图学习

1.开关门案例-Actor类

  1. 新建蓝图继承Actor类的BP_Door蓝图类
  2. 打开BP_Door在VIewport中添加门所需要的元件(窗口左上角Add Component)
    • 添加静态网格体(Static Mesh)--DoorFrame(门框)
    • 选中新建的DoorFrame在细节面板(Details)中更改属性Static Mesh的None为SM_DoorFrame
    • 添加静态网格体(Static Mesh)--Door(门)
    • 选中新建的Door在细节面板(Details)中更改属性Static Mesh的None为SM_Door
    • 添加盒子触发体(Box Collision)-Box;Box必须与要旋转的门Door在统一层级目录下。
    • 适当调节门框、门、盒子触发体的位置角度
    • 事件图(Event Graph)中添加事件触发:
      • 选中Box在Details--Events中添加On Component Begin/End Overlap(组件 开始/结束 重叠时)
      • 组件开始重叠时触发按照时间轴设定轨迹执行
      • 组件结束重叠时触发时间轴设定逆向轨迹执行
      • 添加时间轴(Timeline),并且双击时间轴为其添加浮点型轨迹
        • 添加开始和结束关键帧(设置起始时间和开始旋转角度)与(结束时间和停止旋转角度)
        • 设置关键帧差值为Auto(平滑轨迹开关门,否则按均值开关门比较生硬)
      • 设置相对旋转(SetRelativeRotation--参考2.拓展-旋转方法),目标为Door,由于门围绕Z轴旋转,所以分割结构体引脚,单独为Z周添加运行轨迹。
      • 将上面新建的时间轴新轨迹与Z轴连接。
    • 在需要开关门的地方拖拽上面编辑好的BP_Door蓝图,调整位置角度。
    • 大功告成
  3. BP_Door截图

拓展-旋转方法

  • SetActorRotation: 整个Actor类的旋转
  • SetRelativeRotation: Actor类中的组件相对Actor自身坐标的旋转
  • SetWorldRotation: Actor类中的组件相对世界坐标的旋转

2. 开关门案例-按键控制开关门

对蓝图做了部分修改,直接看截图

3.电梯升降

  1. 新建蓝图-->Blueprint Class-->Actor ==>BP_DianTi
  2. 创建电梯元件(构建电梯外观)
  3. 创建盒子触发体(Box Collision),调整大小与电梯底部差不多,以防人上电梯但是没有进入 盒子触发体范围内
  4. Event Graph
    • On Component Begin/End Overlop: 组件重叠 开始/结束时
    • 获取Player Controller
    • 允许输入/输出: Enable / Disable input
    • 设置键盘E键 触发时间: E keyboard
    • 设置门的关闭与打开:Gate
      • 获取到 键盘E键的输入
        • Enable input: Gate执行open
        • Disable input: Gate执行close
        • 默认是Close
    • 交替执行open与close:Flip Flop
    • 新建时间轴:Timeline
      • 参数open: 执行play
      • 参数close: 执行reverse
      • 添加浮点型轨迹:0~3秒内 生成0~1的浮点数
    • lerp:Alpha的值:
      • 0~1的浮点数
      • 返回值:1000 * Alpha
    • 设置电梯元件z轴的坐标位置
      • 参数作为Z轴的值
      • 根据Timeline时间轴的变化不断更新z轴的值
  5. 大功告成
  6. 截图

4. 双向自动开门

  1. 新建蓝图-->Blueprint Class-->Actor ==>BP_ShuangKaiMen
  2. 创建双开门元件(构建双开门外观,左右两扇门)
  3. 创建盒子触发体(Box Collision)
  4. Event Graph
    • On Component Begin/End Overlop: 组件重叠 开始/结束
    • 时间轴:TImeline
    • 2个线性插值(左右门各1各):Lerp
    • 分别设置两个门的相对位置: SetRelativeLocation
  5. 大功告成
  6. 蓝图截图
原文地址:https://www.cnblogs.com/yblackd/p/13489338.html