Unreal Engine 4 笔记 2
转自:http://blog.csdn.net/st_dark/article/details/48005947
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)函数可以在任何时候获得主角对象
1,材质尽量用mask,这样可以节省资源。如果用透明和半透明,会非常耗资源。
2,GPUProfile来统计性能消耗的时候,在editor模式下不是很准,因为编辑器的消耗也算进去了,如果要用,最好以Game模式来查看。
3,UE4不支持640X480的分辨率,如果在这个分辨率下运行程序,会导致程序崩溃。
4,如果角色身上有很多Component需要Attach,尽量在使用时Attach,不要一加载就全部attach,否则当场景中角色很多时,会有严重性能问题。
Unreal Engine 4 笔记 2的更多相关文章
- Unreal Engine 4 笔记
1.UE4的调试输出 //*1 调试输出*// /*case a.快速使用 不设置log类别 默认为LogTemp*/ UE_LOG(LogTemp,Log,TEXT("Your messa ...
- Unreal Engine 4 RenderTarget制作Live Camera效果
Unreal Engine 4 RenderTarget制作Live Camera效果 先上效果: Live Camera我不知道怎么翻译.反正意思就是将一个摄影机的Image渲染到一个2D平面上. ...
- Unreal Engine 4 创建Destructible Mesh(可破坏网格)
Unreal Engine 4的物理引擎用的是PhysX. 支持网格破坏.布料.物理粒子等,非常强大.曾经须要编码才干完毕的工作,在Unreal Engine 4 中仅仅须要拖拖拽拽就完毕了,非常方便 ...
- 游戏音频技术备忘 (五)Wwise Unreal Engine 集成代码浅析 二
AkAmbientSound类的实现 Unreal Engine提供了一个基本对象的构造器ObjectInitializer,一般来说用户创建的类总是拥有很多变量,因此 AkAmbientSound ...
- 游戏音频技术备忘 (四) Wwise Unreal Engine 集成代码浅析 (一)
在Engine\Plugins\Wwise\Source下为主要Wwise相关代码,AkAudio文件夹下为运行时相关代码,AudiokineticTools下为编辑器工具相关代码,Audiokine ...
- 游戏音频技术备忘 (三) 集成Wwise到Unreal Engine
当前受众较广的商业游戏引擎有 Unreal Engine.Unity.cocos2d-x等,在音频领域的第三方中间件则有Wwise.FMOD.Criware等,言多且烦,我们首先集成Wwise到 Un ...
- 实例甜点 Unreal Engine 4迷你教程(4)之用C++实现添加子Widget到VerticalBox中以及ClearChildren
前置教程: 1. 实例甜点前面的三篇教程: 2. 最好看看笔者前面的一篇关于博文(后记:本来笔者想用C++做DragAndDrop的功能,但是失败了,下面是蓝图实现的方法): http://www.c ...
- 实例甜点 Unreal Engine 4迷你教程(6)之三个重要基础操作SpawnActor、TArray的Add和Remove
本小节的教程需要完成前置教程:建议阅读<实例甜点 Unreal Engine 4迷你教程(5)>,因为5里面提到了本节的工程,不过也可以在不看5的前提下直接阅读本教程. 第一步:Empty ...
- Unreal Engine 4 C++ UCLASS构造函数易出错分析
Unreal Engine 4 C UCLASS构造函数易出错分析 GENERATED_BODY GENERATED_UCLASS_BODY 在Unreal Engine 4的任意类中通常会见到两个宏 ...
随机推荐
- 玩转TypeScript(3)--数组
数组的语法和语义与C#数组非常相似,首先要指定一个数组名,后跟冒号,冒号后面紧跟数组的类型,数组类型名后面跟方括号表示当前定义的是一个数组,对于一个空的数组定义,可以使用如下的语法: btnArray ...
- hog+svm+检测人(代替默认的参数)
#include <iostream>#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui. ...
- 【OpenCV】Learn OpenCV
learn opencv website: https://www.learnopencv.com/ learn opencv github:https://github.com/spmallick/ ...
- CTF-练习平台-Misc之 隐写2
二.隐写2 下载文件后解压,发现是一个png图片,依照老套路查看属性,没有发现 用WinHex打开,在图片文件中,修改图片宽度,将箭头处的A改为F,保存后打开图片 发现flag(对于png的文件格式详 ...
- jQuery--- .hasOwnProperty 用法
☆ obj.hasOwnProperty('prop'): 是用来判断一个对象是否有你给出名称的属性或对象.不过需要注意的是, 此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个 ...
- listening for variable changes in javascript
https://stackoverflow.com/questions/1759987/listening-for-variable-changes-in-javascript
- python 判断字符串中字符类型的常用方法
s为字符串 s.isalnum() 所有字符都是数字或者字母 s.isalpha() 所有字符都是字母 s.isdigit() 所有字符都是数字 s.islower() 所有字符都是小写 s.isup ...
- PHP中开启gzip压缩的2种方法
网页开启gzip压缩以后,其体积可以减小20%~90%,可以节省下大量的带宽,从而减少页面响应时间,提高用户体验. php配置改法: 复制代码代码如下: zlib.output_compression ...
- RAC3——RAC原理开始
1.RAC并发 RAC的本质是一个数据库,只不过现在这个数据库运行在了多台计算机上,在原先的单实例中,一个进程是否可以修改一条数据,取决于是否有其他进程(同一台计算机上)并发修改.在RAC环境下,这种 ...
- svn 报错及解决
报错: svn: E155015: One or more conflicts were produced while merging r68508:73308 into '[分支]' -- reso ...