零基础Unreal Engine 4(UE4)图文笔记之Relative和World(七)

目录

概念

参考系

层级关系

结论

ActorLocation

RelativeLocation

WorldLocation

总结

下一章


在前面的教学中,使门旋转的核心节点就是SetRelativeRotation,还有Location和Scale

这三种属性都有三种参考系不同的方法Actor,World,Relative

概念

参考系

参考系不同,坐标不同

假设在一个Actor中添加一个StaticMesh,将Mesh沿Actor坐标系x轴正方向5个单位,再把Actor沿着世界坐标系x轴方向移动5个单位,那么现在Mesh的世界坐标就是10个单位。每一个对象都有自己的参考系,ActorLocation和WorldLocation都可以看做绝对参考系。

 

层级关系

在上面的例子中Mesh是Actor的子对象,而Actor整个关卡蓝图的子对象,因此在移动Actor的时候,Mesh的位置也会改变,关卡也可以移动,同样Actor也会跟着移动

结论

  1. 我们在蓝图中对Mesh这样的组件进行“相对--”改变的时候,是以Actor为参考系的
  2. 而在对Actor进行“Actor--”改变的时候,是以关卡(场景)为参考系的
  3. 而在使用“世界--”属性的时候,实际上是以整个场景为参考系的

这里你可能有疑问,2和3好像没有什么区别。现阶段你可以理解为没有区别,因为当前关卡的原点和世界的原点是重合的,也就是说两个参考系相同,当你学习了流送关卡之后就会发现这个问题

下面我们进行一些测试

ActorLocation

1.新建了一个蓝图,先创建了两个cube(随便两个物体都可以)。

先说最简单的SetActor类型的,选择一个SetActorLocation

我们让物体在开始游戏后2秒后朝着一个方向移动一定距离,需要一个EventBeginPlay(打开事件图表就有,是灰色是因为还没有使用,引出引脚就可以了)和一个Delay节点(空白处搜索或者按住D左键单击),按图示连接

可以看到

目标是self

New Location,xyz都是0,我们的目的是将目标在当前位置发生一定移动,那么我们需要计算这个最终位置

我们设置Actor的位置,就使用Actor的位置,所以搜索节点GetActorLocation

这个Return Value返回的是一个Vector类型变量,也就是个三维向量,使用Break就可以对这个坐标的xyz进行相应操作了

我们随便给物体一个位置

运行,发现没,这个Actor中的两个Box的位置都移动了,而且中间间距没有变,说明什么?

说明你设置Actor的位置,是Actor就移动了,不管Actor都多少东西都要同时移动,里面的东西只是随着Actor移动而移动.

RelativeLocation

让我们来试试SetRelativeLocation,这个是对Actor里面的Mesh进行操作

由于两个box没有区别,所以我把box_2换成了球,更明显

注意此时GetActorLocation也要换成GetRelativeTransForm还要break一下

SetRelativeLocation的目标是Box2

在场景中,点击该物体,你会发现,这个Actor的中心在正方体中,Mesh_2(球)其实是在正方的x轴正方向300的位置

为什么是x轴300的位置?请注意蓝图该mesh的细节中我设置的就是300,这里设置的的位置就是相对位置(RelativeLocation)

那么你可以想象一下,程序是设置这个球的相对位置x-200,最终球的相对位置是x=100,也就是说会靠近正方体对吧?

运行你就知道了,没错吧,你在场景中旋转这个Actor,不管你怎么旋转,这个球最后都是靠近正方体

这个就是SetRelative设置相对属性,

WorldLocation

多的不说,直接看SetWorldLocation

这就奇了****怪了,一样的?把Actor旋转一下试试

发现没,这次球并没有靠近正方体,而是朝着当前世界的X轴负方向移动了200

理论上说,这么详细的图文,如果没看懂,那就多看两次,绝对不可能理解不了,实在不行自己去试试,这是最好的办法。

 

总结

  • 本文通过实例设置ActorLocation和Mesh的WorldLocation和RelativeLocation来告诉大家这三钟设置的区别
  • 什么时候用哪种?这个问题相信看明白的朋友心里已经有想法了
  • 如果你希望你Actor里面的东西全部动或者旋转,就用SetActor属性,
  • 如果希望局部改变就用World或者Relative,World的属性主要就是基于世界坐标,不会涉及你Actor旋转问题,Relative简单的来说就是使用的Actor内部的坐标系。
  • 自己领悟吧,我用的用词可能不太标准,语句也有些啰嗦,水平有限,只能这样了
  • 你必须要理解这个相对坐标和世界坐标,其实不难,你只要理解了这个坐标,另外几个都是这个道理,位移,旋转,缩放

下一章

改变一下我们的界面,讲一下UE4的UI系统

 

 

 

 

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

锋哥游戏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值