UE4总结六

1,在子弹射击的时候发现子弹打偏了,原因是世界中的box collider中的碰撞效果设成没有物理碰撞效果,这样子弹就不会反弹了。


2,可支配的pawn:

从人物切换成无人机的时候,需要将镜头从人物切换成无人机,做法,把无人机继承为pawn,通过controller的possess把pawn切换下即可

让无人机可以移动这样做:由于使用了add MovementInput所以让无人机继承从pawn改成Character,添加characterMovement组件


注意把在CharacterMovement把默认移动模式从Walking改成Flying




3,对于无人机这种滑旋桨旋转效果:


在无人机的动画蓝图中


每秒绕z轴转20度,将四个螺旋桨的骨骼找到,将四个骨骼的rotation改成这样,这里只是放了一个螺旋桨,四个骨骼合起来连



当然,也可以自己写,用两个长方体拼成螺旋桨,每0.01秒调用set Time by Event调整螺旋桨z轴的度数




4,对于上面的第一种螺旋桨它是通过骨骼mesh,修改,如果当前mesh是static mesh,可以用第二种方法


5,对于一些免费模型可以百度搜CG模型网,输入想要的模型,类型选择FPX,选择免费即可下载


6,在人物射击时如果相机碰到墙上或物体,导致人物射击的子弹从镜头射出去打到自己,因此解决方法,在枪口处再加一个镜头,子弹从第二个镜头射出去即可



7,c++中要想使用controller,在c++的class中找到默认的GameMode,右键基于现在的来创建蓝图类


然后在Project Settings中把默认GameMode改成创建的



8,对于输入有两个,第一个是对于按键的绑定,第二个是对于轴的绑定,对于视角的输入就选第二个


9,在HUD中要把一个image放到屏幕中间,首先将花瓣移到中间


然后把Position X和Y都设为0,这样图片就自动移到花瓣中间了


如果把花瓣放到图片中间,把Alingment的X和Y设为0.5即可


10,Character和Pawn和Actor的区别,character可以走路,Pawn可以被控制,Actor可以在世界中被生成,Pawn的父类是Actor


11.在制作血条的时候可以不用HUD来做,在人物中add Component-->cube 放到镜头前,mesh选择一个平面的mesh,这里选择导入的plane,materials选择血条框

在这个cube上面再放一个血量cube,把血的material放进来,这样血量是material,还有动态效果

最后让血条和相机一起移动,在人物的beginPlay中将血条框和血都Attach To到相机上



12,在怪物头顶上制作血条:

创建一个widget,放置一个text和一个progress bar,在怪物蓝图中add Component-->widget命名为nameandhealth,在UI属性中选择创建好的widget


要设置血条窗口的大小,这里做法是在Widget放了一个progress bar,在widget调整bar位置,也可以添加一个widget,把花瓣四块铺满整个widget,让整个widget放一个progress bar,然后add component这个widget,在User Interface属性中调整Widget Class下面的Draw Size属性,调整窗口尺寸,如果想让血条一直正对镜头,把Space的World改成Screen即可

   


第二种让血条正对相机而不是从侧面看只是一条线的方法,设置该widget的World Rotation,在Set Percent后面设置Nameandhealth的WorldRotation


11,要让人物跑动实现由脚印等特效


在动画中添加特效,Socket Name选择脚部关节



12,查看游戏类中的层级关系,

在UE4中windows-->developer Tools-->Class Viewer



13,资源从一个项目导入到另一个项目

右键文件Asset Actions->Migrate


会显示出该文件依附的所有文件,点击ok


弹出文件夹目录,选择新项目的文件路径,点击确定,就把该文件放到新项目中


14,在粒子编辑器中,有如下这些效果拼合起来的


如果只看其中一个效果,点击其中一个中间的S图标即可,在Smoke属性中有一个Use Local Space选项,


对于勾选和不勾选的效果如下,对于像炮弹烟雾痕迹效果,要使用第二种效果



在烟雾的Size By Life属性中,如果要变更,这样做


在曲线面板中把左侧的右键,全部Remove


点击Size By Life 右侧的曲线图标

再点击Horizontal和Vertical把曲线拉大,曲线就出来了


横坐标0到1表示生命周期从开始到结束,上图意思是烟雾在生命周期的0.2时刻就把Size改为2倍大小

在Color Over Life属性中,ColorOverLife右下角方框点了说明只显示该属性的曲线不显示AlphaOverLife曲线,红绿蓝色代表颜色的三元色,在曲线中红色框代表红色的颜色变化曲线



15,在粒子效果属性中,Bounds->use Fixed Relative Bounding Box,勾选时当粒子效果不在视野时,引擎为了优化就把效果隐藏了,但是炮弹烟雾这种拖拽效果,如果炮弹不在视野中但是烟雾在视野中,那么也会把粒子效果隐藏,把这个勾不勾选即可


16,在蓝图中,该函数必须要连接白色箭头线,如果不想让它有,右键->Convert to pure cast

变成了纯函数,没有连接线


如果要在c++中实现纯函数,不需要连线



15,自身坦克上头显示血条,如果让自身坦克不显示血条,其他坦克显示血条,做法,判断当前坦克蓝图里是否被controller控制,用isPlayerControlled函数


16,对于游戏中物体,在游戏中选中,属性中add Component可以有new Blueprint Script Component和new C++ component两个选项,创建该物体的蓝图类和c++类



17,在c++中的类命名规范

18,得到类本身物体用GetOwner();如果GetOwner->没有提示函数,说明没有include该物体这个类文件,如果物体设置了旋转或位置,但是游戏编译后没有位移,要把Mobility改成Movable


19,要拿到当前的角色,通过



20,c++文件夹中会默认生成一个GameModeBase,要创建蓝图的话就,右键创建蓝图子类


21,在发射射线的时候,第一个参数一般是HitResult,该参数保存了射线碰撞到物体上时保存的信息。


通过HitResult.来获取相关信息,如果不为空指针说明拿到了碰撞到的物体


22,如果c++类右键无法创建蓝图子类,那么就在c++类中,加上Blueprintable



23,多行注释ctrl +K  ctrl+c

取消多行注释ctrl +k  ctrl+u


24,函数声明:由于main中执行函数,这个函数必须写在main的上面,如果写在下面获取不到,因此如果写在下面要在main中上方写个函数声明,告诉main有个函数在你的下面


猜你喜欢

转载自blog.csdn.net/zhangxiaofan666/article/details/79374883
今日推荐