[UE4]扔枪

1.把枪Detach掉:DetachFromActor

3个都选择“Keep World”

2.模拟物理

3.给一个向前的速度

4.切枪,到上一个武器,或者捡起脚底下的武器

 

 

注意Get Component by Class的搜索范围:因为是在weapon枪支组件内部调用该方法,因此搜索范围仅限于weapon的内部组件。weapon的子类都添加有Mesah的组件。

 

StaticMesh继承与MeshComponent

这里的“Mesh”也是“StaticMesh”组件,因此可以搜索到weapon子类里面的Mesh对象

 

模拟物理引起的问题:因为设置的是组件子节点模拟物理,所以扔出去的枪模型跟组件坐标位置不重叠。

 解决这样的问题的办法是:把跟根节点设置为StaticMesh并设置模拟物理:

1.添加一个Static Mesh组件,并命名为Root

 

2.拖拽创建好的Root,拖放到默认生成出来的“DefaultSceneRoot”上面,Root组件就会变成跟根组件了。

 

3.根节点Root的“Static Mesh”如果为空的话,模拟物理是无效的。

 

4.可以添加一个很小很小的Static Mesh:在地图场景中添加一个 Box Brush,设置长宽高为0.1,并转换成 Static Mesh,命名为 Small Mesh

5.设置Root的Static Mesh为上一步创建好的SmallTaticMesh。虽然界面上的“Simulate Physics(模拟物理)”还是不能使用,但是通过蓝图函数是有效的。

 

6.Get Component by Class是从组件根节点往下开始搜索,只要找到一个符合条件的组件就立即返回,所以这里会返回Root组件。

 

不会返回这里的Mesh组件

 7.这样扔掉的枪的坐标就跟枪模型重叠了。

8.要先执行“开启碰撞”,再执行“开启模拟物理”,顺序不能反。如果顺序反了,枪就会掉下的时候会穿过地板,不会停留在地板上面。

 9.扔掉的首先手枪准心跟刀的准心一起出现了。

因此还要执行“OnUnEquip”操作去掉扔掉枪的准心。

这样就只剩下刀的准心了。

 

10.为了方便设置枪模型的碰撞,因此在武器基类“Weapon”根节点下添加一个Static Mesh组件(命名为Mesh)替换在每个子武器类中添加的Satic Mesh组件(原来的名称也叫Mesh)。设置碰撞预设为“Custom”,把“Pawn(人物角色)”设为“Ignore(忽略)”

 

这样,当人走到碰到扔掉的枪的时候,枪就不会被弹飞出去了。

 

posted on 2018-10-19 13:27  一粒沙  阅读(1544)  评论(0编辑  收藏  举报