UE 游戏开发实战

导入动画模型

第一次导入带动画的的模型时,默认就行。后面导入时,因为已经有骨骼了,所以我们需要动画就行。把Import Mesh的勾取消掉,然后点击Import,如果角度不对,那么在场景中确认模型角度之后,删除该模型然后重新导入。重新导入时除了把Import Mesh的勾取消掉,还要在下面调整角度,调整好角度后导入。

 

 

一、在蓝图中产生\销毁Actor

        1.生成Actor

        Spawn Actor from Class,配合Get Actor Transform,1输入要产生的Actor类型,一般为我们自己创建的蓝图类型,2要指定某个物体,即在这个物体处产生我们指定类型的物体。

       还可以不用指定某个物体来获取Transform,直接右键输入MakeTransform产生对应节点,可以输入你想要的位置角度大小属性。

        2.按键事件

        在图标中右键然后找到Input选项,里面有各种事件,常见的鼠标键盘事件就在其中。或者直接输入keyboard或mouseEvent就能直接找到键盘或鼠标事件,大小写无关。

         3.销毁一个Actor

        DesroyActor节点用于销毁Actor,需要指定目标Actor,不指定就默认是自己。可以配合Delay节点使用,Delay节点表示延时几秒再执行后面程序。

二、重生玩家

        我用ThirdPersonCharacter来当成玩家,删除它之后再用SpawnActorfromClass来产生一个新的ThirdPersonCharacter角色,但是此时角色无法操控,默认的那些按键输入功能全部失效了。

        我的建议就是第一第三人称这类的Character角色,在玩家死亡时不要删除角色,要重生时直接设置角色到初始位置,切换到Idle动画,所有有需要的变量如血量还原到初始值,这样角色还能继续操控。

三、射线检测

         单线追踪:LineTraceByChannel,LineTraceForObjects,返回OutHit

        多线追踪:MultiLineTraceByChannel,LineTraceForObjects,返回OutHits数组

        这里我们使用第一人称角色来做测试,创建一个第一人称角色工程,打开第一人称角色蓝图,按如下操作:

 将DrawDebugType选ForOneFrame,这样我们就能查看线踪迹。从OutHit拖出BrekeHitResult节点,这个就是碰撞信息,常见的有Distance(碰撞距离)、Location(碰撞位置点)、HitActor(碰撞到的物体)等等。点击右上角就能切换Game和Scene场景效果,红线就是上面选择DrawDebugType选ForOneFrame而产生的追踪线。如果你想忽略掉一些物体不进行射线检测,那么通过ActoroIgnor来进行设置。

 

 四、计时器Timers

        UE中的计时器可以按指定的时间间隔执行一次(或重复多次)动作。个人觉得有点像unity中协程的味道。

        Set Timer by Function Name --开启定时器执行对应名称的函数。

        Set Timer by Event --开启定时器执行对应的事件。

        Clear Timer by Function Name --关闭定时器。

        Clear and Invalidate Timer by Handle --关闭定时器。

        若是在当前蓝图中定义了要执行的函数,那么Onject可以不用指定,默认就是自己。按下小键盘上的+号键,每隔0.2秒就会执行一次TestPrint这个自定义函数,Looping表示循环执行,不勾选则只执行一次。

         若是要调用其它物体中的函数,则需要先获取这个物体并指定给Object变量。我在场景中放了一个EmptyActor,给它添加了一个蓝图类,名字改为Test_Blueprint,所以下面获取物体时物体类名指定为Test_Blueprint。

 ---------------其它计时器相关节点-----------------

        我们可以把Set Timer by Function Name的返回值提升为变量(TimerHandleStructure类型),这样在下面的函数使用时就直接拿来使用。这些函数基本上都需要传一个TimerHandleStructure类型的参数。

        Get Timer Elapsed Time by Handle --获取指定计时器从开始后经过的时间。

        Get Timer Remianing Time by Handle --获取指定计时器剩余时间。

        Psuse Timer by Handle --暂停计时器。

        Unpsuse Timer by Handle --恢复计时器。

        Does Timer Exit by Handle --计时器是否存在。

        Is Timer Active by Handle --计时器是否处于激活状态。

        Is Timer Paused by Handle --计时器是否处于暂停状态。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值