虚幻4入门
设置游戏物体的位置
- 一种是在视口托取,一种是在属性面板编辑,这俩中很粗暴就不演示了
- 还有就是在C++类里使用代码进行控制,这边要使用一个SetActorLocation(FVector a)的函数,这个函数的参数就是要设置的三维坐标位置。
- AddActorLocalOffeset(FVector a); :这个函数是给坐标加上一个三维向量
代码施加力和力矩
- 头文件:在.cpp文件中引入Components/StaticMeshComponent.h
- UStaticMeshComponent->AddForce(FVctor Force,FName BoneName,bool bAccolChange) :这个函数是添加力的函数,调用UStaticMeshComponent型对象所指向的该函数,可以为其添加Force的力,BoneName是指当前里所作用的骨骼,默认为NAME_None, bAccolChange是指当前力是否直接作用为加速度(跳过与质量进行运算的环节),默认为false.
- AddTorque :这个函数详情与上一个类似,是添加力矩的。
碰撞
碰撞体物理碰撞
- 这是虚幻引擎俩大碰撞方法的其中一种,为物体加上碰撞体(可以在材质编辑器中编辑具体的碰撞体),在属性编辑面板的Pyhsics项下勾选第一项(启用模拟物理),这样俩个有碰撞体的物体撞到一起就会模拟物理碰撞了。
扫描碰撞
- 这是另一种检测碰撞的方式,当你不使用力来移动物体,而是直接每一帧调用AddActorLocalOffeset(FVector a);方法来对物体的位置进行改变时,你可以考虑该方法的第二个参数,bool bSweep,这个布尔型的参数是指是否启用扫描,扫描你游戏物体即将经过的路径,当前面有遮挡的时候,就会在遮挡的位置停下来。
碰撞细调
- 在属性编辑器里找到Collision并将其Collision Presets项选择成Custom如下图
- 其之后会显示这样的一个碰撞详细调节的区块
- Collision Enabled是选择开启查询和物理的,可以选择单开,多开,不开。这里的查询是查找是在路径上是否会有碰撞,但并不真正的发生碰撞
- Object Type是选择当前物体的类型,对应后面的物体响应使用
- 截图中央的大矩阵,其三列分别为:忽略(不做任何碰撞操作),重叠(生成重叠检测,检测是否有物体与之重叠,但不会阻挡物体),阻挡(真真切切的碰撞,真真切切的阻挡)。ColliSion Responses:是对所有项都做一个改变。 Object Responses:是对每种物体调节不同的碰撞响应。
HitResult
- 这个东西是在碰撞检测到之后会返回的一个对象,AddActorLocalOffset的第三个参数可以填为HitResult的引用,这样在使用AddActorLocalOffset进行移动时一但检测到碰撞就会对该引用返回一个HitResult的对象。
- 该对象可以通过调用其中的Location来得知碰撞的具体位置。