初学者系列教程内容:
1. 创建新项目
2. 导航视口
位移操作:(注:与鼠标右键一起操作更加方便)
旋转、缩放、拉伸操作:(注:要选中要操作的物体才行)
3. 创建一个新的关卡
方式一:这种方式更加注重于蓝图
方式二:这种才是正确创建一个空白关卡的正确方式
4. 放置actor
actor:Actor 是可以放置在关卡中的任意对象。Actor 是支持三维变换的通用类,比如如平移,旋转和缩放变换。 Actor 可以通过游戏代码(C++或蓝图)来创建(Spawn)及销毁。在 C++ 中,AActor 是所有 Actor 的基类。
分类:
1) 静态网络网格 StaticMeshActor
它是一种基本类型的可渲染的几何体。从Content中将staticmesh拖到关卡中,该网络物体会自动转换为StaticMeshActors
如果想要让物体在游戏过程中移动或缩放StaticMeshActor,需要以下设置
物体的碰撞 collision 碰撞属性
5. 运行
example_1:简单门与人物的碰撞教程
第一步:创建新模板
第二步:添加ThirdPersonCharacter以及SmartContent 打开map
第三步:点击SmartContent中SM_Door,设置SimpleCollision
第四步:将door添加到map中
第五步:则人物与门就会发生碰撞
example_2:设置门的actor(包括门框和门),并设置门的相应器(Box Trigger),这样可以设置门的开关
第一步:添加ThirdPersonCharacter和SmartContent(初学者组件)
第二步:使用actor创建完整的门 将门放入到地图中
Blueprint-->Actor
所需要的组件(并注意组件的包含关系)
效果图
第三步:编写蓝图(Blueprint)
在创建的Door(Actor)中的Event Graph中编写
Box Trigger(盒子触发器)
Add Time Line:添加事件线
Rotation Location Scale其参考系不同所产生的效果也就不同
参考系:Actor World Relative
此处使用的是setRelativeRotation,因为改变的是门相对于门框的位移(门和门框以及触发器共同构成一个Actor)
第四步:最终效果蓝图
example_3 按键控制门的开关
第一步:按键控制,那么需要Box Trigger之前,获得玩家控制,这样才能获得玩家的输入
进入触发器,玩家按键才会起作用,否则,玩家按键失去效果
知识点:按键事件(Input+想要设置的键)
使用按键事件,则会有两种选择,按一下--门开,再按一下--门关,有两种方式可以选择
方式一:这种直接判断
方式二:Branch 这种需要添加判断条件
首先创建变量 这个变量的默认值是true,因此在下面的图中这个变量作为Branch的判断条件
另外:下图是只有第三人称玩家才能开门操作,与重叠事件一起调用
通常情况下,按键操作是不写在Door里的,而是写在ThirdPersonExampleMap的blueprint里
example_4:鼠标点击事件控制门的开关 g+鼠标右键
首先鼠标可见事件,有两种方式:
方式一:在ThirdPersonExampleMap的Blueprint中一开始就设置鼠标可见
方式二:在worldsetting中的GameMode中的PlayerController Class新建一个类
改名为MouseController
door_open中的蓝图
注:想要看运行过程中蓝图的流程 选中创建的Actor
控制权切换所需要的知识点
1. 获得玩家的控制权
2. 让传入inpawn的角色获得控制权,我们就可以操控传入的Inpawn的角色,原来的角色就失去控制权
扩充知识点Pawn:Actor类与Pawn类
Actor:在UE4中,Actor类是可以放到游戏场景中的游戏对象的基本类型。你如果想放置任何东西到游戏场景中,必须继承Actor类。
Pawn:Pawn类是一个代表你或者代表电脑的人工智能的游戏对象,它是可以在屏幕上控制的游戏对象。Pawn类是从Actor类中基础的,它可以通过玩家的设备(键盘、鼠标等)控制或者被人工智能脚本控制。如果它是被玩家控制的,我们通常称之为controller(控制器);如果它是被人工智能脚本控制的,我们通常称之为AI(Artificial Intelligence,人工智能),如果你经常玩游戏,那些NPC(Non-player Characters,非玩家角色)就通常具有AI行为。
3. 混合镜头:为了使角色在转换的时候的动作不那么生硬,需要使用set view target with blend事件
可以设置时间
用法如下:通常与decay事件(快捷键:d+鼠标右键)一起使用,起到更好的延迟效果
步骤:
第一步:控制权的切换至少需要两个物体
加载ThirdPersonCharacter和Vehicle模板
并且首先使得小白人为第一控制权 进行如下设置
第二步:编写蓝图
第三步:play
对于当前example中小白人的运动问题,当切换控制权时,使用set movement事件
对于当前example汽车的运动问题,设置为刹车(handbreak) ,记得打勾,会经行刹车操作
这个存在刹车后由于惯性的存在,仍然会使车向前移动一点距离
如果想要切换镜头后直接静止,需要使用如下:
优化后的蓝图
知识点:
1. 自定义事件 Custom Event
2. 类型转换,例如想要和小白人经行通信,就需要转换小白人类型,就获得了小白人里面的所有东西
3. 简单的判断事件
example_1 区域加速
第一步:建立区域加速区域(即盒子触发事件)
第二步:建立小白人的基本通信
第三步:isValid事件使用
每一帧都要响应,对应于Box trigger响应区域
第四步:自定义事件,当小白人触发盒子,产生加速效果(因为加速事件是小白人的,因此需要在小白人blueprint中写)
example_2:按键实现物体旋转(一对一)
每一帧都旋转,因此
在小白人蓝图里设置按键事件
rotation一定要打开,才能进行绑定
在map中进行简单的通信绑定
example_2:控制多个物体同时旋转
自定义事件不变
知识点:
1. 获得该类的所有的物体
函数与事件的区别:
example_1:使用蓝图接口来实现开关门
第一步:创建my_door的actor
第二步:创建door_interface接口,并在里面创建can open the door函数
接口里方法,即可以当作事件来使用,也可以当作函数来使用
第三步:在my_door里面添加door_interface接口,并编写开门操作
第四步:在小白人的蓝图中创建变量door,并绑定
如果door里面有值,就相应door_interface接口的can open the door事件
第五步:重叠操作,在my_door里写重叠响应事件
重叠时,将my_door里的door传入到ThirdPersonCharacter中,那么里面的变量door就有效
不重叠时,就不穿door值,就无效,则按键就不起作用了
昼夜交替涉及到的知识
UE4中实现昼夜交替,需要改变的值有
example_1:简单的昼夜交替 昼夜的变化与天空球有直接关系
第一步:创建day_night的actor,并创建三个变量,其对应的属性如上所示
第二步:event trick和自转事件
第三步:在ThirdPersonExampleMap中要获得第一步创建的三个变量
首先这三个变量一定要打开(即眼睛)
效果优化:
星星:
一定要使的天空可动
点击太阳
优化:通过改变值来达到昼夜交替的效果
光的默认设置在模板里(我们将平型关的默认值改为5)
晚上(night):
平行光值的变换
天空光的值的变换
sky sphere云密度的变换
白天(day):
和黑夜一样,需要注意值
Event Graph中的事件
再此优化:这样重复的操作十分不适合蓝图的编写 将黑夜和白天组合在一起
创键day_night函数 把需要设置的值都传出去
游戏中的UI十分重要
UI所涉及到的知识点:
1. 游戏一开始事件:begainplay
2. widget:器皿,装组件 通常显示界面需要线创建一个器皿来容纳组件
一定要绑定创建的界面
example_1:创建用户界面 有游戏开始、游戏结束,并显示图片
第一步:用户界面操作
首先创建UI_Main界面
素材资源直接导入到content中
点击UI_Main,设置界面框,并导入图片
通过screen size调整界面大小
图片直接拖进去,并调整图片(注:这是界面组件的通用调整用法)
anchors设置在最中心,这样能够使得界面随屏幕的大小而变化
使用Button、text用法,并重新命名,写事件
第二步:事件的编写 点击buttion下的on click事件
地图蓝图事件的编写
第三步:扩展 显示的界面是地图的一部分,那就需要首先后的视野
创建一个pawn(而不是actor),并添加camera组件,拖入到地图中,并设置它是最开始的控制权
鼠标显示事件
获得新建立摄像机的视野(在pawn里--下面左边的图片,而不是在input里--如下面的右边图片)
为了使背景图片不挡住地图,设置图片的透明度
playerController、player、character之间的关系
第四步:实现镜头的转换,从my_camera到character的视野中
example_2:暂停UI以及UI动画
第一步:暂停UI
第二步:各事件
第三步:UI动画
当继续游戏时,UI以缩放的形式消失
1. 新建一个画布,将按钮都放进这个画布中
但是本次例子开头有主界面,因此将主界面和暂停界面都卸载beginplay上,且暂停界面设置为不可见,主界面显示一次就不需要了。
example_3:局域网联机设置
第一步:创建三个界面
main_menue
在主界面里设置模糊--这里不使用主界面
find_server
join_server
上面太大,会无法添加到服务器,因此要将屏幕和设计的Horizontal box的大小,设置所期望的大小
当服务器的名字过长,可以截取到与text的长度一样长
即截取到边框的长度
将服务器的名字进行绑定
第二步:事件的编写
首先main_menue
1. 创建游戏
一定要注意project_setting中的设置问题 全部为主地图
2. 搜索服务器
3. 退出游戏
其次是Find_Server
1. 刷新
思路流程:当创建完游戏后,在另一个窗口搜索服务器,服务器的名字出现在服务器窗口。可见服务器窗口这个组件很重要,当服务器窗口中存在服务器的时候,就需要让刷新组件消失,因此需要绑定服务器窗口,并设为变量。
这种绑定操作可以起到实时刷新的作用
并且在点击完搜索服务器,刷新组件运动一会,就出现服务器,这个服务器就出现在服务器的窗口里
将搜索服务器为自定义事件
设置为自定义事件的原因:
2. 返回
最后Join_Server
总结:效果大概达到了,但是出现两个问题:
在观看另一个骨骼动画重定向视频时解上面出现的问题
example_3:开场动画
第一步:导入素材
1. 图片素材直接导入
2.视频素材导入基本步骤
1) 创建Media Player
勾选生成动画的封面贴图,很有用
2) 导入视频素材
3)点击播放Media Player,进行绑定导入的贴图
第二步:UI的设计
video_pic是创建media_player时生成的贴图
bg是背景图片
第三步:编写蓝图
1) 新建一个变量
2) 事件
第四步:界面显示
第五步:完整的UI及其优化
无论做哪一种游戏类型,现有的小白人无法满足玩家对角色人物美观性的要求,因此,必须重新设计人物模型,这就涉及了人物在地图中walk、run、jump等骨骼动画。因此,今天来学习骨骼动画重定向操作。
第一步:查看小白人的骨骼
第三人称小白人的骨架位置如下
重定向图片预览
1. 分别打开小白人的骨骼和自己导入进去的骨骼
2. 打开骨骼重定向管理器,设置
3. 姿势查看,将人物变成 T pose ,并点击Modify Pose中use current pose
这样点击view pose和hide pose,就会出现不同的效果
4. 对于导入进来的骨骼,需要自己绑定骨架,如果直接auto map极有可能出现问题
也需要重定向管理器操作
在绑定骨骼之前,先对骨骼的名称进行了解(机翻)
上图中的Thigh_L定向出错,应该是leg-left-thigh
打开这个资源,会出现动画
同样操作:闲置状态、走路状态、奔跑状态、
要使人物mode在地图上跑,需要新建一个人物蓝图
调整摄像机
新建一个动画蓝图
新建混合空间,命名为walk
并将混合空间与人物蓝图绑定
选择人物动画
使用新地图来显示新人物
在搬运thirdPersoncharacter中的运动事件时,一定要将报错的组件创建为变量
然而出现后退步转身的情况
第一人称射击游戏,需要在导入模板之前就选择第一人称模板,这样枪里才有子弹。
第一步:设计3D界面
第二步:在游戏中,3D界面是以actor的形式存在的,不能使用create widget
添加widget组件
在2D UI使用blur可以模糊化,但是在3D UI,无法使用,因此使用Border来处理
第三步:地图的设置
这样红色箭头就变化了,旋转90度将其调整过来,放在枪口上,并在
注:如果想要通过鼠标来进行互动
以下步骤:
一开始界面显示:
新建一个pawn