UE4中物体的空间变换

一、打印物体的三维坐标位置

1. 获取在场景中的物体

a. 在场景中添加一个Cube,在世界大纲视图中修改名称为MyCube,并且可以看到它的类型是StaticMeshActor。
StaticMesh是静态网格的意思,Actor代表场景中可以看到的物体,也就是参与场景的物体,看不到的物体称作Object,也就是内存中的物体。
b. 打开关卡蓝图,点击右键,添加MyCube引用,该引用就是场景物体对象。

2. 获取物体的Transform属性

使用Get Actor Transform函数获取Transform属性。

3. 打印物体三维世界位置

a. 将Get Actor Transform返回的Return Value节点采用Break Transfrom节点进行分解。
b. 将Location属性连接PrintString节点进行输出。
c. 将PrintString节点挂在某个事件上进行触发。

4. 其他

a.通过Get Actor Location 可以直接获取位置
b.通过Get Actor Rotation 可以直接获取旋转量
c.通过Get Actor Scale 3D节点 可以直接获取缩放量

二、变换物体的位置

1. Set Actor Location

a. 将物体从 静态 状态修改成 可移动 状态
在场景中点击物体,在 细节 -> 变换->移动性 上将【静态】设置为【可移动】
b. 从物体中可以引出 Set Actor Location 节点,通过修改节点可以改变物体的位置
c. sweep 属性为true,则若物体移动会与其他物体发生碰撞,则会移动停止在碰撞的位置;为false则物体忽略碰撞,也就是发生物体有可能与其他物体重叠。
d. teleport 是否传送物理状态
e. Sweep Hit Result 节点,如果sweep碰撞检测开启,则返回发生碰撞后的碰撞信息节点。
可选择 Break Hit Result节点 ,打开Hit Result结构体

2. Break Hit Result 必须是开启检测后才有效

a. Blocking Hit (Bool) 物体移动中物体是否被阻挡
b. Time (Float 0~1) 物体在百分比多少的位置被阻挡,1是正常移动
c. Location (V) 最新位置
d. Normal (V) 最新位置法线
e. Impact Point (V) 碰撞点,重要属性
f. Impact Normal (V) 碰撞法线,重要属性
g. Phys Mat (Struct) 碰撞的物理材质
h. Hit Actor (Struct) 碰撞的物体
i. Hit Compenent (Struct) 碰撞物体的组件
j. Hit Bone Name (Name) 碰撞骨骼名称
k. Hit Item (I) 碰撞三角形的索引
l. Face Index
m. Trace Start 物体移动开始点
n. Trace End 物体移动目标结束点

三、绘制移动路线

1. Debug出物体移动之后的中心点

a. 将Break出来的Location 连接到 Draw Debug Point 节点的Position上
b. 设置 Draw Debug Point 节点属性Size的大小5,Point Color的颜色红色,Duration,延迟10秒
c. 将触发事件连接到Draw Debug Point节点上
d. 运行程序并按F1切换到网格视图,就可以看到移动之后的中心点。

2. Debug出物体移动的路线

a.添加 Draw Debug Line 节点,并连接起来
b. Line Start 向量起点,连接Trace Start
c. Line End 向量终点,连接Location(物体停止后的位置)
d. Line Color 线的颜色
e. Duration 延迟时间
f. Thickness 线条粗细

3. Debug出物体碰撞的球体

a. Center (V) 连接 Impact Point (碰撞点)
b. Radius (F) 半径
c. Segment (I) 球体精细程度
d. Line Color (Struct) 线条颜色
e. Duration 延迟时间

四、打印碰撞的物体名称

1. Break Hit Result节点上的 Hit Actor 中拖出 Get Display Name节点

2. 使用打印函数打印碰撞的物体名称

3. 在控制台输入 show Collsion ,可在场景中看到碰撞体

五、设置物体的旋转和缩放

1. Set Actor Rotation

a. 从物体中拖出 Set Actor Rotation
b. 可以设置新的角度,Z轴 (航向角) 填写45°,代表顺时针旋转45°
c. Return Value 返回是否成功,true代表成功

2. Set Actor Scale 3D

a. 从物体中拖出 Set Actor Scale 3D
b. 通过New Scale 3D 拖出 Make Vector 节点
c. 通过设置值,改变物体大小

3. Set Actor Transform

a. 从物体中拖出 SetActorTransform 节点
b. 从 SetActorTransform 中的 New Transform 节点拖出 Make Transform 节点
c. 设置Transform的值
d. 也可以通过添加Transform变量来修改

4. Relative

根据物体RootComponent进行相对位移,在初级应用中,Relative和不带Relative的函数在效果上是相同的。

a. Set Actor Relative Location
b. Set Actor Relative Rotation
c. Set Actor Relative Scale 3D
d. Set Actor Relative Transform

六、本地坐标和世界坐标

1. 位移

a. Add Actor Local Offset 根据物体原点坐标进行移动
b. Add Actor World Offset 根据世界原点坐标进行移动
c. 当本地坐标和世界坐标方向一致时,位移效果一致;当本地坐标和世界坐标方向不一致的时候,位移效果也会不一致。

2. 旋转

a. Add Actor Local Rotation 根据物体原点坐标进行旋转
b. Add Actor World Rotation 根据世界原点坐标进行旋转
c. 当本地坐标和世界坐标方向一致时,旋转效果一致;当本地坐标和世界坐标方向不一致的时候,旋转效果也会不一致。

3. 变换

变换中的位移和旋转与跟本地坐标和世界坐标相关,缩放是直接设置大小,本地与世界是一样的。

版权声明:本文为CSDN博主「幽冥丶虾米」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_14930205/article/details/78542009

最新文章