UE5学习笔记(十三)——蓝图基础之推动物体和物体碰撞

目录

一、给我一个力,可以推动地球

步骤1、建立一个球体,并给予材质

步骤2、推它

【知识点1】添加碰撞和物理引擎设置

二、当地球撞向墙壁

步骤1、设置好撞击环境

步骤2、选中墙壁,添加名为wall的tag

步骤3、写蓝图

【知识点2】碰撞事件的发生设置

【知识点3】tag的使用

三、也不是一定要撞的啦

步骤1、调整为重叠设置

步骤2、写蓝图

进阶步骤3:添加触发器

【知识点4】碰撞设置与重叠设置的区别

【知识点5】碰撞事件和重叠事件


一、给我一个力,可以推动地球

【目标】向球体施加一个推力让它前进

步骤1、建立一个球体,并给予材质

之前的文章中都是使用坐标变化的方式,使物体发生移动。但是在自然界中,物体发生移动,一定有力的作用,我们如何来模拟这种自然规则呢?

首先得到我们需要的材料,一个地球。用地球是因为可以更好的看出滚动的情况。照一张世界地图的图片放入文件夹中就可以导入工程中进行使用。导入后将图片拖到物体上,就可以更换贴图,非常方便。

步骤2、推它

在推动它之前,需要设置好它的规则。这里告诉物体,你是一个成熟的球体了,需要自己遵守物理法则了。

1、添加碰撞体

右键列表中的这个物体,选择编辑,打开网格编辑器。

在菜单中选择碰撞体,选择添加简单碰撞体,即可为物体添加一个无形的框体,用于与外界接触产生反馈。

可以看到球体外部出现了绿色线框,这个框就是球体无形的支架,完成后保存。

2、开启物理引擎

离开网格编辑器,在外部选择该物体,在Detail面板中选择physics快捷跳转到物体引擎区域,将simulate physics打开,至此,你就为这个物体赋予了万有引力。

落地了!

3、施加一个力

这个地球终于不是一个漂浮在空中的球了,我们为他编写蓝图,这里用到add force的节点,是physics下的节点,如果找不到需要去掉情景关联的选项。

【知识点1】添加碰撞和物理引擎设置

如果一个物体想要使用unreal的物理引擎,必须添加的两个内容。

第一个是碰撞体。对应unity中的刚体(rigidbody)碰撞体是用于响应外界环境的一个看不见的边缘。举一个简单的例子,一个仓鼠球中软软的就是仓鼠,外面的外壳就是碰撞体碰撞体可以和仓鼠一样大,也可以比它大得多(也可以比它小哦,可以把仓鼠视为能看见但摸不到的东西)。

打开actor,点开菜单,可以添加简单碰撞体,这个简单碰撞体适用于简单模型的,由于面数少,计算简单,因此不会影响性能。

第二个是开启物理引擎。在自然界中有各种各样的力,有重力、引力、斥力、拉力、压力等等。自然界中所有物体,必须遵守这些力,但是引擎中的物体天生是没有受力的。如果要模拟自然规则,必须为物体打开这个开关,力才会作用于这些物体上。

在关卡模选择需要开启物理引擎的actor,可以在细节detial面板中找到physics,勾选里面的simulate physics即可使当前acto应用于物理引擎。

【目标达成啦!】向球体施加一个推力让它前进

二、当地球撞向墙壁

【目标】撞击后打印出物体名称

步骤1、设置好撞击环境

需要撞击还需要给地球一个目标,先新建一面墙作为撞击的目标。

为墙壁添加碰撞,步骤与给球体添加一致,只不过是球形碰撞改为盒形碰撞。如果想不起来了可以看一下上文。

给地球打开撞击事件设置。

步骤2、选中墙壁,添加名为wall的tag

步骤3、写蓝图

当碰到tag为wall的物体时,打印出物体名称

【知识点2】碰撞事件的发生设置

对于需要对碰撞产生事件的物体,需要在细节面板中的collision上勾选simulation generates hit events,即可在蓝图中调用碰撞事件

【知识点3】tag的使用

这里用到了一个tag,主要用途是在相同类型的物体中,给一个第二层的筛选功能。筛选后,使用碰撞事件时,可以选择与什么样的tag产生碰撞事件。在其他使用到物体类型的地方,也可以使用tag。这里的用法与unity中完全相同。

【目标达成啦!】撞击后打印出物体名称

三、也不是一定要撞的啦

【目标】进入一个区域后触发

步骤1、调整为重叠设置

还是那个地球,先给他开启允许重叠的设置。

接着这里注意,需要将被碰到的墙体(注意!不是球体,如果改了球体,球体就失去了原本的碰撞性质)的碰撞预设值修改为所有开启重叠的物体。

步骤2、写蓝图

这里的触发事件是选中球体创建出来的

完成后可以看到球体穿墙而过,并留下一个文字标记。

这个功能可以用在游戏很多地方,比如玩家走过一个金币时,金币并不会和玩家发生碰撞,而是触发了一个吃金币的行为。

进阶步骤3:添加触发器

在设计游戏的时候,有时候会用到当进入一个区域时,触发某种行为。这里的触发用到的方法不是碰撞,而是重叠。

这里在墙壁前添加了一个盒体碰撞器(trigger box)

设置好重叠设置后,添加了一个非常简单的蓝图。

完成后运行一下,太神奇了,当球体撞到一个无形的墙时,它会瞬间移动到其他地方。这不就是游戏中传送门的设定么?

【知识点4】碰撞设置与重叠设置的区别

重叠和碰撞的设置方式有所区别,碰撞是在需要发生碰撞事件的物体上设置,重叠是需要重叠双方都设置。

碰撞设置方法是:

1、在需要发生碰撞的双方物体上添加碰撞体

2、需要相应物理力学的物体上开启simulate physics

3、在需要发生碰撞事件的物体上开启simulation generates hits events

重叠设置方法是:

1、在重叠双方上开启generate overlap events

2、至少有一方需要被穿透,被穿透的一方将collision persets修改为overlapAll(注意一旦选择了这个,代表这个物体会穿透一切,连地板也不行,所以选择后需要将物理引擎关闭,防止重力带着物理一直下落)

3、如果使用的是触发器,则将collision persets修改为trigger

【知识点5】碰撞事件和重叠事件

使用OnActorHit触发碰撞事件,碰撞事件会在物体接触时一直触发

使用OnActorBeginOverlap、OnActorEndOverlap触发重叠事件,只在进入和离开时触发一次

【目标达成啦!】进入一个区域后触发

猜你喜欢

转载自blog.csdn.net/weixin_35106335/article/details/127616518