2015-11-14 13:03:01 xi_niuniu 阅读数 3151
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2396 人正在学习 去看看 杨石兴

Unreal Engine 4 蓝图脚本学习,根据《Blueprints Visual Scripting for Unreal Engine》学习整理


默认情况下,actor的Transform组件中 移动性属性为“static”,  就是在游戏运行时,actor是不可进行移动和操作的。所以为了实现对象
在游戏中可移动的效果需要把这一属性修改为 "可移动"




为了能够改变脚本以后所附加到的对象同样为可移动的,需要打开蓝图编辑器进行一些修改






为了使物体在游戏世界中能够移动,我们需要知道以下信息

•  Where the cylinder currently is 圆柱体在什么位置
•  What direction it is supposed to move in 想要移动的方向是什么
•  How fast it is supposed to move in that direction 在那个方向上移动的速度是多少

创建速度变量和方向变量

Speed 为float类型变量

Direction为Vector类型变量


速度设置 为200.0f;



移动方向设置为 y = -10.0f;





Normalizing is a common procedure in vector math that ensures that
the vector is converted to a length of one unit, which will make it compatible with
the rest of our calculations

标准化向量(单位化向量)就是将向量值转化到一个单位长度(向量的模为一)。以便在后序程序运算中相兼容



速度值乘以一个时间值,所以选择 float*float    时间值类型也为float


将StaticMeshComponent组件拖拽到事件图表中  以获取圆柱体当前的位置



GetWorldDeltaSeconds: 获取相邻两帧之间的间隔时间。 这个数值受游戏运行所在的机器性能影响的,性能高的机器时间间隔就较小,反之则较大。为了能够
在不同性能的计算机上表现出相同的移动速度,所以会把速度值乘以DeltaSeconds。



Transform属性中包含对象的 位置、  旋转 和 缩放的信息。 能过GetWorldTransform可以获得当前对象的Transform信息

BreakTransform 可以提取Transform中的不同部分
MakeTransform根据Location、Rotation和Scale "合成" 一个新的Transform


事件Tick每一帧都会触发

SetActorTransform 根据传入的Transform值设置Actor的Transform


这时运行游戏,圆柱体只会朝着一个方向移动。
为了实现圆柱体在游戏中来回移动,向事件图表中添加两个新的Direction 变量 ,选择设置并分别设置y值为10.0  和 -10.0


Delay会根据Duration设置的秒数循环执行
FlipFlop会执行 A 和 B所连接的Node 中的一个,默认先执行A。

播放游戏观察事件图表中数据流的走向


圆柱体在游戏中来回移动

现在通过之前创建的蓝图脚本可以创建更多且有相同属性的游戏对象











2017-11-27 18:10:02 WAN_EXE 阅读数 444
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2396 人正在学习 去看看 杨石兴

前面的例子中已经基本上介绍了虚幻引擎怎么写代码,怎么画蓝图,并且实现了几个简单的例子,比如移动一个Actor,用户的输入输出时间,通过鼠标按键等操作控制物体。也进行了粒子系统的简介,还有其它的变量之类的其它的东西。

写到现在还有一些名词我们是比较模糊的,那么现在就简要地总结一些这些名词。比如,你会问问题,什么是Actor,什么是Component, 什么是Pawn,现在我也是比较困惑。这篇文章会注明它们,并且提供它们的详细介绍。一旦你知道它们这些名词表达什么意思,那么你就可以通过跟多的文档来让它们工作。

Projects

这个很好理解,现在一般写代码都有一个Project,用于放所有的代码。

Project通常被一个.uproject的文件引用,这个相当于window的程序快捷键。


Objects

字面上翻译过来就是物体,是基础的building blocks.

物体有很多的功能可以供游戏使用,Unreal殷勤中,所有的物体都是继承Object.所以说UObject是所有类的基类,这里类似于java中的Object.它实现了垃圾回收,元数据(UProperty)可以给编辑器提供接口,以及加载和保存的序列化。


Classes

类定义用在Unreal游戏中的Actor或者是Object的方法和属性,就和一般的C++的类类似。类是可以继承的,也就是说一个子类会继承它父类的信息,类可以通过C++代码或者是Blueprints进行创建。


Actor

这个没有办法翻译称汉语,说演员?也就是说一个Actor是首先它是一个Object,是可以被放置到level编辑器的。

Actors是一个泛型类,这个类支持3D变换,比如平移,旋转,和缩放。Actors可以通过代码(C++或者blueprint)创建(created spawned)或者销毁。

在C++中AActor是所有Actor的基类。


Components

组件是一个功能(functionality)可以被添加到一个Actor中,组件不能独自存在,但是当它被放入到Actor中的时候,那么这个Actor就可以获得组件提供的功能。

比如一个, Spot Light(点光源)组件,允许一个Actor可以像spot light那样发光。一个Rotating Movement Component (旋转移动组件)会让你的Actor旋转,一个Audio Component则会让你的Actor进行发声。


Pawns

可以翻译称小卒,小卒是Actor的子类,在游戏中扮演avator 或者persona角色,比如游戏中的characters,类似于游戏中的人物,什么之类的吧。小卒可以通过玩家进行控制,或者以non-player characters形式通过AI进行控制。

当一个小卒通过玩家或者AI进行控制的时候,那么此时它被认为是占有的。相反的,如果一个pawn没有被玩家或者ai控制,那么它被认为是Unpossessed.


Characters

人物是Pawn Actor的子类,它被用于游戏中的玩家人物,Character子类包括碰撞的建立,两足的移动输入绑定,以及其它的被玩家控制的核心移动功能。


PlayerController

PlayerController类用来接收用户的输入,将它转换到游戏中。每个游戏至少有一个PlayerController。一个PlayerConroller通常都是占据着在游戏中表示Pawn或者Character的对象。

而且PlayerController也是网络多人交互的点。在多人游戏中,服务器对于每个玩家都有一个PlayerController的实例,因为它必须调用每个玩家的网络功能。每个用户只有他们自己的GameController,只能通过GameCtroller和服务器交互。


AIController

就像PlayerController拥有一个Pawn实例表示游戏中的人物,一个AIController占据一个Pawn实例表示游戏中的not-player character.默认的,Pawns和Character会变成被AIController控制,如果它们不指定被PlayerController控制的话。


Brushes

刷子,刷子是一个Actor,描述3D体积。


Levels

等级?感觉翻译太不恰当,应该翻译称场景比较好。一个场景是用户定义的玩游戏的一片区域。场景通过放置,变换,和修改它包含的属性进行创建,查看或者修改。

在Unreal编辑器中,每个场景都保存在一个独立的.umap文件中,因此有时候你也可以称它们为Maps.




先翻译这么多,后面的翻译比较好理解,也就不说什么了。





2016-05-10 17:22:53 xue_huashan 阅读数 369
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2396 人正在学习 去看看 杨石兴

内容多数摘自官方文档。

https://docs.unrealengine.com/latest/CHN/GettingStarted/Terminology/index.html


有一些在引擎中常见的 Actor 类型,并且大部分种类的游戏都会用到它们。这里是我们已经制作的最常见类型 Actor 的列表:

  • Pawn - Actor 的一种类型,用于表现一个可供控制的游戏物体,比如是玩家的角色。Pawn 通常都是被玩家或者 AI 通过 Controller 控制并移动。

  • Character - 一种特殊类型的 Pawn,用于双足类型的角色,并具备一些复杂的功能。

  • Controller - 依附并控制一个 Pawn。通过将 Pawn 和 Controller 的分离,我们可以编写 AI Controller,用于控制 Pawn,并且和玩家控制 Pawn 采用相同的接口。

  • Player Controller - 一个更为特殊的 Controller,用于从玩家的手柄中获得输入信息,或者鼠标键盘中获得殊瑞星纳西,并将这些信息驱动它所控制的 Pawn 或者 Character 的行为。

#静态网格体(Static Mesh)是由一组多边形构成的一块几何体,这些多边形可以缓存到显存中并由显卡进行渲染。这使得可以高效地渲染这些多边形,也就意味着它们可以比其他诸如 BSP 画刷这样的几何体类型更加复杂。由于它们在显存中进行缓存,所以可对静态网格物体进行平移、旋转和缩放操作,但是使用任何方法都无法对它们的顶点进行动画处理。静态网格体是虚幻引擎中创建的关卡时创建世界几何体所使用的基础单元。它们是在外部建模软件中创建的3D模型(例如 3dsMax,Maya,Softimage 等),通过内容浏览器将它们导入虚幻编辑器中,保存到包内,然后通过多种方式应用它们来创建可渲染的元素。在游戏中,使用虚幻引擎制作的绝大多数地图都包含静态网格体,通常形式为 Static Mesh Actors(静态网格体 Actor)。静态网格体的其他用途为创建门或电梯等的可移动物体、刚体物理对象、植被与地形装饰、程序化创建的建筑物、游戏目标以及许多其他视觉元素。

#BSP是Binary Space Partition的缩写,即二元空间分割,这种计算机图形技术会把复杂的多边形分割为很多更小、更简单的多边形,使得其可以更快速地渲染。

#CSG
它代表Constructive Solid Geometry,即构造实体几何体。这只不过是世界几何体(World Geometry)的另一种说法,在虚幻引擎中,它是指由BSP画刷制作的几何体。制作关卡的主要流程为:首先创建BSP画刷来确定关卡的区域和体积,然后在UnrealEd中使用这些画刷来制作关卡的CSG或世界几何体

2018-07-14 23:26:08 SionCHEN 阅读数 207
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2396 人正在学习 去看看 杨石兴

承接上文,这篇笔记主要记录Actor部分以及Level Blueprint的运用。


Actor的创建和移动

和Maya类似,但比Maya简单,直接从素材库拖到主窗口,之后W(移动)E(旋转)R(大小)调整即可。因为主窗口右上角可以调整刻度,所以在UE4内的调整比较精确;如果仍需要更加细腻地操纵,则可以从右侧Outliner选择Actor之后在Details-Transform内更改。


此处需要注意的是,UE4人性化地在Scale设置了一个锁,可以锁定当前比例缩放。



Level Blueprint

在上方Blueprints栏下面,可以打开Level Blueprint。



个人对Level Blueprint的理解是全局地操纵Actor的行为和关系,如一个Trigger和一个球分属不同的Class Blueprint,因此无法直接在类内对其编辑,则可以用Level Blueprints来方便地描述两者关系。

但这显然影响了每个类的封闭性,而且过多地使用Level Blueprint会使Actor间的关系变得极为复杂,不方便维护——想想错综复杂的一团毛线,你很难找到线头。就像把所有的代码写在一个method里,debug很难,找其中某行代码更难,所以要尽可能地多创建Class Blueprint而少用Level Blueprint。

在蓝图界面,选择对象后右键单击会弹出选框,根据需要执行的人物选择应用的类即可。以下是一个简单的Level Blueprint连线:


蓝图描述:人物进入Trigger,显示Sphere;人物离开Trigger,隐藏Sphere。

连线之后框选,按C,可以comment这段蓝图的功能,使蓝图结构更清晰。尽量多用该功能。


对蓝图的理解:

  1. 可视化编程,系统默认了各类和接口,按照关系通过连线即可保障程序运行,也可以自己通过代码创建蓝图以供使用。
  2. 红色为事件,蓝色为类或行为,绿色为判断或选择,五边形为关系,圆+三角为对象。
  3. 可以把蓝图看作乐高积木或者螺丝钉,UE4默认了各种标准组件,只要在框架内按照执行顺序连接,就可以做到程序运行。
  4. 但有些复杂功能必须要创建蓝图或Coding实现。

编辑完蓝图后点击Compile之后Play就可以看到结果,在发生蓝图中定义的时间时,在蓝图界面会出现动态效果表示正在运行。

2015-08-26 16:53:17 ST_Dark 阅读数 1340
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2396 人正在学习 去看看 杨石兴



3月份学了一阵子UE4,这里做一下总结:
 1.Ue4按空格键快速切换缩放,旋转,移动模式
 2.Actor继承自aactor,可以看成是一个容器,用来装"组件"这个对象
 3.根据Unreal的传统命名规则,所有直接或间接继承自Actor的类都以首字母A开头,所有直接继承自UObject类都以首字母U开头
 4.把物体蓝图的碰撞属性设置成overlap重叠碰撞,然后碰撞判断使用重叠的那一个函数
 5.Ue4常用概念
  Hud:显示在游戏屏幕上的信息(区别与按下菜单键才出来的信息),如血量,伤害等等
  Component组件,有很多种属 性,如movecompnent表示移动属性
  Rootcompnent表示方向,位置属性
  Actor :无方位,位置的最基本的物体
  pawn :继承自actor,最常用的傀儡,可以被玩家控制器或者ai控制器操控
  character:继承自pawn,相当于添加了movecompnent的pawn,并且拥有碰撞体积(胶囊状,需要把它调整到贴图的大小)也经常用。
  Controller:分为玩家控制器和ai控制器
 6.可以利用时间轴来做出数值的渐变效果,如从走路到跑步的渐变(减少了突然跑步的唐突性),
   并且里面有一个reverse表示一个相反的速度,即接上reverse接口后又可以从跑步渐变回走路
 7.混合空间1d可以缓和各几种可以由同一个变量控制的动画,但它本质也是一个动画(只不过是几个动画的组合,但本质不变),
   而如从站到走(速度超过x到跑(速度超过y)).但记得点应用参数修改否则上面的变量名字none不会改变(如改成speed)
      该执行哪种动画(跳,游泳,还是这里的走路选择动画)都需要建立状态机来判断,
   其实这里的混合空间动画也可以直接用状态机来判断速度到达与否。所以某种意义上说混合空间动画只是为了简化状态机的蓝图书写而产生的
 8.第三人称给摄像机添加一个springarm之后就可以使得摄像机随着人物动而动,和第一人称的那个一样.注意是把摄像机拖到sringarm(弹簧臂)里作为它的子节点
 9.动画蓝图由状态机和eventgraph两部分组成,状态机用来写什么(如状态a)状态下改变动画,eventgraph用来写什么是a状态。
   类蓝图则用来放入形象,动画蓝图,控制器等等,相对于精灵。也可以加入其它组件(如摄像机,弹簧臂)让他们和角色成为同一个组件一起移动
   只有在场景里放入物体的蓝图才能接受控制,直接放入物体则不行,因为物体无法直接添加属性,自然无法接受控制属性。
 10.自适应旋转的移动(orient rotation movement),这个在类蓝图里记得勾上,可以在主角左移右移时通过旋转人物改变人物的朝向,但记得你首先得把人物的yaw设置为至少360才能各种x轴旋转。
 11.之所以不能切换视角是因为springarm没有设置为use pawn control rotation!
    默认没勾上。
    所以通过设置 find camera component when view 成第一人称视角可以动是因为此时忽略了camera和springarm.
 12.蓝图里直接添加按键和inputs里在action mapping处设置按键效果一样,都是按下一瞬间有效果,那种长按的效果只有inputs的axis mapping设置才行
 13.在物体move components里设置的max walk speed 表示的是物体在接收到移动命令后一瞬间能够到达的速度,以后将一直维持这个速度。
    并且这个速度将作为值传递需要的变量(如需要通过值判断播放哪种动画的变量)。它并不表示物体的速度不能设置的更大了。所以可以把max walk speed设置为100,并在动画蓝图里将100处设为walk,200处设为run,那么自然一般情况下只会播放walk动画,然后你可以通过设置一个跑步键,按下它的时候max walk speed(也就是一般走路速度)将达到200,松开回到100,那么自然就可以播放和停止跑步动画
    14.Ue4技巧,打开场景蓝图,再返回原场景,选中a,再返回蓝图,则右键出来的全是a类型的函数并且target自动帮你设成了a.只有打开场景蓝图编辑才会这样.
    其实很多地方,你点击了某个组件,再右键创建蓝图功能,默认对象或组件就是刚刚点击的那个
 15.Spawn actor蓝图函数用来添加actor,如产生子弹,那么就写一个子弹蓝图,给这个蓝图add compnent一个mesh(如球体mesh或者正方体mesh),然后就可以每次按下出现这么个mesh了
    16.任何compnent都没有实体显示能力,它们只是一些类罢了,想要在蓝图里体现出这些属性必须给actor添加拥有贴图效果的类(如basic sphere等且设置它们的贴图)。
       可以给actor创建一个实体如球,再给这个球添加各种compnent作为子节点,该actor就具有各种属性了。但注意,一如果父节点和子节点有重复的属性,如碰撞属性,则以父节点的属性为依据,父允许碰撞则可以,子允许而父不允许仍然不允许
    17.Get control rotation用来获得的不是角色所面向的方位,而是你(控制者而不是pawn)所直视的方位,如第一人称发射子弹时需要一直朝着你面向的方向发射
    但是get actor rotation则可以获得角色面向的方位
 18.可以在类bp里写函数,在levelbp里调用,但(除了输入命令外)也可以全部在那个类的bp里完成,写在levelbp里主要是为了全局统筹,便于管理.
  1.但记住在类bp里写的函数不能有引用自身的情况出现,不然就是c++里的类的重复包含。
  2.输入按键操作只有场景bp和自己控制的那个bp里写才有效,其它bp里写了,但是由于没有接受你的控制所以按键当然是无效的,这时可以在那个bp里面写好函数,levelbp里使用按键来控制它,达到了不换控制者而操作的目的
    19.Getplayer pawn(character)函数可以在任何时候获得主角对象



  
  




没有更多推荐了,返回首页