UE4/UE5 虚幻引擎,Pawn的碰撞,怎么防止Pawn移动的时候穿透物体。

前言:在UE项目开发中,有些我们需要自己新建一个Pawn来控制视角,但是如果我们没有设置Pawn的碰撞,那么Pawn在移动的过程中,很容易穿到Actor里面。而有的时候我们并不需要Pawn穿过物体,就必须要给Pawn增加碰撞。


1、新建一个Pawn类。

2、 添加FloatingPawnMovement(必须添加这个组件才能控制Pawn移动),Use Controller Rotation Pitch和Use Controller Rotation Yaw(控制旋转),添加Mouse input和Movement input(如果不知道怎么写,可以直接导入第三人称内容包从ThirdPersonCharacter蓝图中复制)。

3、设置我们刚才新建的Pawn

启用自动输入,设置Player 0(这一步是防止在关卡中有多个Pawn的时候,不能控制自己刚才设置的新建的Pawn。比如在上图的关卡中,有两个Pawn一个是刚才我们新建的Pawn,另外一个就是ThirdPersonCharacter第三人称小白人的Pawn。)

 4、控制刚才新建的Pawn,可以看到穿到Actor里面去了。  

5、给Pawn添加一个Box Collision碰撞组件,将碰撞预设改为Pawn(其他的类型也可以,但必须能阻挡到其他碰撞。)

 6、还是穿透了,把Box 的Hidden  in Game(在游戏中隐藏)取消勾选,能看到碰撞体穿到Actor物体中了,Pawn没有被阻挡。

 7、让我们来参考一下 ThirdPersonCharacter第三人称小白人的蓝图,可以看到Collision碰撞组件是作为Root Component根组件的。所以ThirdPersonCharacter(ThirdPersonCharacter的父类也是Pawn)不会穿透到Actor物体中。

 

 8、然后我们把自己新建的Pawn的Collision碰撞组件作为Root Component根组件来试一下。

 把Box 的Hidden  in Game(在游戏中隐藏)取消勾选,能看到Pawn被阻挡住了,这样就不会穿透Actor物体。 

总结:在Pawn中设置碰撞的几个条件。
一、添加Collision 碰撞组件,设置碰撞预设(保证碰撞预设能阻挡碰撞体)。
二、把Collision作为根组件,而不是附加到根组件。

猜你喜欢

转载自blog.csdn.net/qq_39934403/article/details/126532463