概述
现实世界中的碰撞现象大家都司空见惯,比如:一枚硬币掉到地板上(和地板发生碰撞),发出清脆的响声。但在虚拟世界里,这个过程至少要分为两个步骤:
- 碰撞:硬币和地板发生碰撞
- 碰撞响应:系统获取碰撞事件,然后调用一些列方法来播放碰撞的声音
本文将使用虚幻引擎的蓝图实现一个碰撞并响应的过程
文章目录
- 案例一: 基本碰撞检测
- 效果演示
- 搭建场景
- 运行一下
- 碰撞响应
- 运行一下
- 案例二:对碰撞对象进行过滤,然后响应
- 效果演示
- 搭建场景
- 蓝图
- 运行一下
本文中的碰撞响应效果以物体颜色变化为例,关于物体颜色变化的原理请见老王的另一篇博文《虚幻引擎图文笔记:游戏运行时如何在不更换材质的情况下修改物体材质的参数(比如:颜色)》。
案例一: 基本碰撞检测
效果演示
搭建场景
下面那个绿色的小球是今天的主角,当前我们使用的就是博文《虚幻引擎图文笔记:游戏运行时如何在不更换材质的情况下修改物体材质的参数(比如:颜色)》中的小球,我们稍稍把它抬高一点,以免它一上来就和地面发生碰撞。
在绿色球上方添加一个普通的球体(StaticMeshActor
)并勾选它的Simulate Physics
选项
运行一下
我们发现上面的小球落到绿色球上并弹走,说明碰撞发生了,接下来我们要对这个碰撞事件进行响应
碰撞响应
开启Simulation Generates Hit Events
以告诉系统,我们需要检测并响应这个对象的碰撞事件了(为了避免不必要的效率损失,这个选项默认是未开启的)
然后我们修改一下绿色小球的蓝图
运行一下
案例二:对碰撞对象进行过滤,然后响应
效果演示
搭建场景
这回我们在绿球的上方添加两个小球,并分别为它们添加Tag
为"A"和"B"
注意:这里添加的是Actor
的Tag
蓝图
实现碰撞对象过滤的方式有很多,本文使用的是通过Actor
的Tag
。这个步骤最关键的就是从Event Hit
的Other
引脚获取和自己碰撞的另一个对象。
先获取到和绿球碰撞的Actor
的第一个Tag
,如果是"A"则让绿球变成红色,如果是"B"则让绿球变成蓝色。
运行一下
最后
以上就是无情唇彩为你收集整理的虚幻引擎图文笔记:用蓝图实现简单的碰撞以及碰撞响应的全部内容,希望文章能够帮你解决虚幻引擎图文笔记:用蓝图实现简单的碰撞以及碰撞响应所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复