【蓝图】p28-p29按键+鼠标点击实现开关门

p28,创建门的蓝图类

actor和组件的区别、门的轴心点修改

创建一个Actor

请添加图片描述
添加一个静态网格体组件
请添加图片描述
创建一个门框
请添加图片描述
同理创建一个门Door
请添加图片描述

注意(当门的中心点不在边角上时)

创建一个Scene组件
请添加图片描述
把物体变换位置
请添加图片描述
这时只需要旋转Scene就可以旋转物体了
这种方法比较麻烦(注意要在3D建模软件里设置好坐标点)
继续之前的内容
组件搜索Box Collision(盒体碰撞),(注意,盒体碰撞要和Door在同一级,如果盒体碰撞在Door的下一级,开门时盒体碰撞会随门的旋转移动)
请添加图片描述
调整盒体碰撞大小
请添加图片描述

蓝图

在组件选中Box可以在细节中找到下图
请添加图片描述
创建组件开始重叠,组件结束重叠和时间轴
从组件拖拽一个Door到时间图表,拖拽出引脚搜索SetRelativeRotation(设置相对旋转)

三个旋转区别

SetActorRotation(设置Actor旋转)
SetRelativeRotation(设置相对旋转)
SetWorldRotation(设置场景旋转)
请添加图片描述
SetActorRotation的目标是Actor,整个蓝图类旋转,目标是自己
SetRelativeRotation和SetWorldRotation旋转的是蓝图类里的单个组件
SetRelativeRotation相对旋转是无论怎么转,自己都是(0,0,0)
SetWorldRotation世界坐标永远不会被改变,不会受物体改变而改变

继续绘制蓝图
蓝图如下图连接
请添加图片描述
把门拖拽到场景即可

按E键开关门

需要对开关门事件进行控制
请添加图片描述
在事件图表搜索Gate(门)(可以理解为必须有钥匙才可以打开门)
请添加图片描述
如图连接使玩家成为打开门的一个必须要素
创建蓝图E,连接Gate蓝图的Enter(进入)节点,但是这时进入游戏没有反应,需要新节点
创建蓝图节点Enable Imput(启用输入),Disable Input(禁用输入)和Get Player Controller(获取玩家控制器)
Get Player Controller(获取玩家控制器):告诉控制器是否开启了玩家键盘的输入
如下图连接
请添加图片描述
创建新结点Flip Flop(使玩家按下E键后第一次走A,第二次走B,第三次再走A,循环往复),如下图连接蓝图
请添加图片描述

使鼠标点击也可以开门

在组件选中Door,在细节面板找到On Clicked(点击时)(当鼠标点击之后触发事件)
用蓝图On Clicked替换掉蓝图E,在世界场景设置找到Game Mode(游戏模式),Game Mode Override(游戏模式重载)选择ThirdPersonGameMode(第三人称游戏模式)
请添加图片描述
下图配置了玩家的控制器,点击玩家控制器类的加号,创建新蓝图
请添加图片描述
勾选细节面板中的Mouse Interface(鼠标接口)中的Enable Touch Events(启用触控事件)、Enable Click Events(启用点击事件)、Show Mouse Cursor(显示鼠标光标)
打开Door_BP事件图表搜索Set Show Mouse Cursor(设置显示鼠标光标)(搜索不到可以关闭情景关联再搜索),把NewPlayerController中的显示鼠标光标关掉
如图连接蓝图请添加图片描述
此连接使靠近门出现鼠标,远离门鼠标光标消失

可能遇到的bug问题

第一次进入盒体碰撞没有开门,退出第二次进入才开门
问题分析:在组件中盒体碰撞在门的上一级,开关门时门会移动,会和盒体互相干扰(小bug),门和盒体被视为单独存在,两个蓝图事件会同时执行
解决办法1:让门和盒体在同一级
解决办法2:如下图连接蓝图请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值