美文网首页
2022-10-02 / 08 再编辑

2022-10-02 / 08 再编辑

作者: Liveup | 来源:发表于2022-10-07 22:41 被阅读0次

    关键词:蓝图类 Actor 世界坐标 相对坐标 Collision

    Prerequisite

    完成自动开关门(详细见上一篇)

    目标:集合所有开关门类的逻辑,帮助我们后期快速创建一个门

    • 新建 Actor (蓝图类),增加组件:门框、门、触发盒子。
    • 将开关门蓝图逻辑,放入其中,后续拖拽使用。

    1. 创建 Actor

    • “内容浏览器” 中 右击打开 “新建 BluePrint class” -> “Actor”。
    • 重命名该 Actor 类为 “Door_BP”,双击打开。
    • 有关 Actor 理解:Actor本身相当于一个身体,往其上添加组件Component(相当于穿衣戴帽,或者像给爱车换高档座位一样)

    2. 添加组件:(门框 | 门) | 碰撞盒子

    • Static Mesh 组件:门框 DoorFrame、门 Door
    • 理解:Static Mesh 静态网格组件,可指代模型,门和门框都是静态网格组件。
    // Actor 结构如下
    - Defined
      - DoorFrame
        - Door
      - Box Collision
    

    3. 添加自动开关门逻辑

    不同:触发盒子 Trigger Box ,这里组件是碰撞盒子 Box Collision

    • 世界坐标是恒定的,是相对自身当前位置的旋转。
    • 三类旋转的区别:setActorRotation 整个蓝图类进行旋转; 蓝图中的个体:setRelativeRotation; setWorldRotation。
    • 相对于门,我们的 actor(相对于世界位置中的旋转 vs 相对于actor自身的旋转),所以使用 setRelativeRotation

    4. 替换为按键 Q 进行开门

    按键进行开关门:按键 Q - 增加节点流程控制 - Gate(Enter Open Close Toggle Exit)

    • 理解:Gate 相当于一把锁,Enter开锁,Open 可开锁状态,Close 不可开锁状态。
    • 问题:蓝图连接好,但到达 Box Collision 触发范围后,按键 Q 开门不生效
    • 解决:新增 3 个新节点,分别是(Enable InputDisable Input)和 作为 target 的(get player controller)玩家控制器。因为按键要响应,需要先通过节点开启玩家控制器的按键输入。

    5. 添加节点 流程控制 - Flip Flop 正反器,实现开关门

    • Gate 节点 (「Exit) - 连接新增的节点 Flip Flop(」「正) - 时间轴(Play」「开关门轨迹) - setRelativeRotation(z轴)。
    • Gate 节点 (「Exit) - 节点 Flip Flop(」「反) - 时间轴(Reverse」)。

    6. 增加鼠标点击进行开关门

    添加点击事件:给组件 Door 添加 on clicked 事件

    • 问题:添加点击事件后,演示时进入碰撞范围,无鼠标出现。
    • 原因:需要给 PlayerController 勾选开启 显示鼠标 / 允许点击 等选项(默认是关闭的)。
    • 解决:开启玩家可点击模式。在 “世界设置”新增玩家控制器 - NewPlayerController,勾选选项Show Mouse CursorEnable Click EventsEnable Touch Events。因为我们无法修改默认玩家控制器的设置,只能新增一个改啦。

    相关文章

      网友评论

          本文标题:2022-10-02 / 08 再编辑

          本文链接:https://www.haomeiwen.com/subject/fsvjartx.html