阿赵UE学习笔记——11、地形系统

本文介绍了如何在虚幻引擎中使用地形系统,包括创建地形、调整参数、雕刻地形、控制范围以及使用材质制作并绘制两层纹理。与Unity相比,虚幻引擎的地形系统更强调自定义材质以实现复杂多变的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

阿赵UE学习笔记目录

  大家好,我是阿赵。
  继续学习虚幻引擎的用法,这次来学习一下虚幻引擎的地形系统的用法。

一、创建地形

  在选项模式里面,选择地形:
在这里插入图片描述

  进入到地形界面之后,需要先创建一个地形:
在这里插入图片描述

  留意看看创建地形时候的参数,这个很重要:
在这里插入图片描述

  把默认的参数改到最低,可以帮助理解这个格子的概念:
在这里插入图片描述

  这里指的是,每一块面片里面有7x7个小格子,然后总共有1x1块格子。
  然后调大一点参数:
在这里插入图片描述

  这个时候,变成了15x15,在每个小格子大小没有变化的情况下,一个大格子里面包含了15x15个小格子。所以每个大格子的面积也就变大了。
  如果保持7x7不变,下面变成了2x2,现在还是只有一个面片,一个面片里面就包含了2个7x7的小格子。
在这里插入图片描述

  最后修改一下,上面的参数都是最低的,然后把组件数量变成2x2,这个时候,看起来好像和刚才差不多,但意义变得不一样,因为现在变成了有4个面片,也就是4个组件,然后每个组件是7x7的小格子。看最下面的总组件数,现在也变成了4。
在这里插入图片描述

  现在可以新建试试:
在这里插入图片描述

  创建出来的地形,每一个面片都是可以单独选择的,刚才我选择了2x2组件,所以实际上是4个组件。
在这里插入图片描述

二、雕刻地形

  接下来要让地形产生变形,选择雕刻页签。
在这里插入图片描述

  下面可以选择笔刷的各种参数
在这里插入图片描述

  然后就可以在地形上面刷出高度了
在这里插入图片描述

三、控制地形范围

  由于为了刷出更大范围的地形,我刚才创建的时候,选择了很多个组件,所以现在有很多个面片在地形里面
在这里插入图片描述

  但很多时候,我们刷完地形之后,发现有些面片已经不需要使用,在实际的范围以外,这个时候,可以选择这些面片:
在这里插入图片描述

  选择删除:
在这里插入图片描述

  这个时候,地形就只剩下我需要的面片,不需要的就删除掉了:
在这里插入图片描述

  如果发现地形范围不够,也是可以添加的:
在这里插入图片描述

  选择添加,然后在地形外点击,就会创建出新的面片组件。
在这里插入图片描述

四、绘制地形纹理

  之前介绍过Blender混合材质的用法,但这个混合材质在地形上是不能使用的。
  然后看看地形本身的绘制功能,选择绘制页签,会发现什么都没得选择,把刷子放到地形上拖动,也没有任何变化。
在这里插入图片描述

  这是因为,地形刷纹理功能,是依赖于地形本身的材质的。
  接下来创建一个可以刷2层地形纹理的材质,在内容浏览器新建一个材质,命名为TerrainMat2Layer:
在这里插入图片描述
在这里插入图片描述

  双击打开材质,把2种不同的纹理贴图包括法线贴图拖到材质里面:
在这里插入图片描述

  这个时候,不要直接把贴图拖到最终输出节点,而是创建2个材质属性节点,右键搜索makeMaterialAttributes:
在这里插入图片描述

  创建了2个材质属性节点之后,分别把刚才的2套贴图连上去:
在这里插入图片描述

  接下来再创建一个LandscapeLayerBlend地形层混合节点:
在这里插入图片描述
在这里插入图片描述

  创建了这个节点之后,选择节点,在节点属性的图层里面,添加2个图层:
在这里插入图片描述

  两个图层分别命名为tex1和tex2
在这里插入图片描述

  这个时候,会发现混合节点多了2个输入接口,这时候可以把刚才2套贴图的材质属性输入到这两个接口:
在这里插入图片描述

  选择最终输出节点,在属性里面,把使用材质属性的选项勾选上:
在这里插入图片描述

  这个时候,会发现最终输出节点的那些属性输入接口全部部件了,只剩下一个材质属性的接口,把图层混合节点的输出,连接到这个接口:
在这里插入图片描述

  材质已经做好了,接下来就把这个材质创建一个材质实例:
在这里插入图片描述

  并且赋给地形:
在这里插入图片描述

  这个时候,会看到地形是一片漆黑的:
在这里插入图片描述

  选择绘制页签,找到最下面的层,会发现刚才在材质里面创建的2个layer,tex1和tex2在里面:
在这里插入图片描述

  不过这个时候还不能刷效果,要先给层加上权重数据:
在这里插入图片描述

  引擎会提示选择保存路径:
在这里插入图片描述

  保存好之后,会发现地形不再是一片漆黑了,而是有了第一层tex1里面的贴图纹理效果:
在这里插入图片描述

  然后选择第二个层,就可以在地图上面绘制纹理了。
在这里插入图片描述

  笔刷的大小,可以在绘制面板里面调节。调节笔刷大小的快捷键依然是中括号。
在这里插入图片描述

  从这个刷地形纹理的过程,可以感觉到,UE的地形纹理刷,似乎并没有Unity那么方便,Unity是不需要额外写Shader,直接拖几张贴图进去,就可以开始刷了。但从另外一个角度可以看出,实际上UE地形纹理的效果是可以更复杂多变,只要编写材质,就可以实现更多的效果。这一点,感觉是比Unity的地形系统要高级很多的。

<think>嗯,用户想要了解UE5中的蓝图基础,特别是键盘和鼠标操作移动。首先,我需要回忆一下UE5的相关知识,确保自己掌握正确的信息。蓝图系统UE的核心视觉脚本工具,对于没有编程背景的用户来说特别友好。 用户提到的键盘和鼠标操作移动,应该涉及到输入事件的绑定和如何通过蓝图处理这些输入。可能包括移动角色、旋转视角这些基础操作。首先,我需要分解步骤:如何设置输入轴映射,如何在蓝图中获取这些输入值,然后应用到角色移动上。 键盘操作通常涉及WASD键控制前后左右移动,而鼠标移动控制视角旋转。在UE中,这些通常通过“输入轴”来配置。可能需要指导用户进入项目设置,添加轴映射,比如“MoveForward”绑定W和S键,Scale分别为1和-1,类似地处理左右移动。鼠标方面,需要设置水平轴和垂直轴的鼠标X和Y输入。 接下来是蓝图部分,特别是角色蓝图中如何获取这些输入值,然后应用移动和旋转。Character类自带了移动组件,所以可能需要使用Add Movement Input和Add Controller Yaw/Pitch Input这些节点。需要注意的是,鼠标旋转可能涉及到控制器的旋转,而角色移动则是基于控制器的方向。 用户可能有疑问的地方包括:如何正确连接轴事件到移动节点,如何处理旋转的速度,可能还需要调整输入灵敏度。另外,是否需要开启鼠标显示或锁定光标的位置,比如在游戏模式下隐藏光标,这样鼠标移动可以控制视角而不受限制。 还有可能涉及到的问题,比如角色移动的方向是否与摄像机方向一致,这时候可能需要使用Get Control Rotation来获取控制器的旋转,并计算移动方向。如果用户遇到移动方向不正确的问题,可能需要检查是否使用了正确的旋转向量。 另外,用户可能需要了解如何测试这些输入设置,比如在游戏模式下运行查看效果,以及如何调试蓝图逻辑,例如打印输入值到屏幕,确保输入事件被正确触发。 需要提醒用户注意的一些常见错误,比如输入轴名称拼写错误,节点连接错误,或者没有正确设置pawn的自动控制玩家为Player0。这些都会导致输入无法被正确接收。 最后,可能需要给出一个完整的蓝图示例,展示从输入事件到移动和旋转的完整流程,帮助用户更直观地理解。同时,推荐一些进一步学习的资源,如官方文档或教程视频,以便用户深入学习。</think># UE5蓝图基础:键盘鼠标操作移动 ## 一、输入系统配置 1. 打开`项目设置` → `引擎-输入` 2. 创建轴映射: - `MoveForward`:W(Scale 1.0)/S(Scale -1.0) - `MoveRight`:D(Scale 1.0)/A(Scale -1.0) - `Turn`:Mouse X - `LookUp`:Mouse Y ## 二、角色蓝图设置 ### 键盘移动实现 ```cpp // 事件图表 Event Tick → Get Axis Value(MoveForward) → Add Movement Input(GetActorForwardVector()) Get Axis Value(MoveRight) → Add Movement Input(GetActorRightVector()) ``` $$ \text{移动向量} = \text{输入值} \times \text{方向向量} \times \Delta Time \times \text{移动速度} $$ ### 鼠标视角控制 ```cpp // 事件图表 Event Tick → Get Axis Value(Turn) → Add Controller Yaw Input Get Axis Value(LookUp) → Add Controller Pitch Input ``` $$ \text{旋转角度} = \text{输入值} \times \text{灵敏度} \times \Delta Time $$ ## 三、关键参数设置 1. 移动速度:建议初始值600-1200 2. 鼠标灵敏度:推荐X轴0.5-1.5,Y轴0.3-1.0 3. 摄像机限制: - 俯仰角限制(-70°~70°) - 使用`ClampAngle`节点 ## 四、常见问题解决 1. 角色不移动: - 检查Pawn的`Auto Possess Player`是否设置为Player0 - 确认角色碰撞体设置 - 验证移动组件是否启用 2. 鼠标控制失效: ```cpp // 在玩家控制器中设置 bShowMouseCursor = false bEnableClickEvents = false bEnableMouseOverEvents = false ``` ## 五、进阶技巧 1. 输入平滑处理: $$ \text{平滑输入} = FMath::FInterpTo(\text{当前值}, \text{目标值}, \Delta Time, \text{插值速度}) $$ 2. 移动预测: ```cpp Predict Projectile Path By ObjectType → 绘制移动轨迹预览 ``` 建议结合`Enhanced Input`插件实现更复杂的输入处理,可通过`Input Action`创建复合输入事件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值