您当前的位置: 首页 > 

开发游戏的老王

暂无认证

  • 2浏览

    0关注

    803博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

虚幻引擎图文笔记:用蓝图实现简单的碰撞以及碰撞响应

开发游戏的老王 发布时间:2020-12-19 12:09:32 ,浏览量:2

现实世界中的碰撞现象大家都司空见惯,比如:一枚硬币掉到地板上(和地板发生碰撞),发出清脆的响声。但在虚拟世界里,这个过程至少要分为两个步骤:

  1. 碰撞:硬币和地板发生碰撞
  2. 碰撞响应:系统获取碰撞事件,然后调用一些列方法来播放碰撞的声音

本文将使用虚幻引擎的蓝图实现一个碰撞并响应的过程

文章目录
      • 案例一: 基本碰撞检测
        • 效果演示
        • 搭建场景
        • 运行一下
        • 碰撞响应
        • 运行一下
      • 案例二:对碰撞对象进行过滤,然后响应
        • 效果演示
        • 搭建场景
        • 蓝图
        • 运行一下

本文中的碰撞响应效果以物体颜色变化为例,关于物体颜色变化的原理请见老王的另一篇博文《虚幻引擎图文笔记:游戏运行时如何在不更换材质的情况下修改物体材质的参数(比如:颜色)》。

案例一: 基本碰撞检测 效果演示

在这里插入图片描述

搭建场景

下面那个绿色的小球是今天的主角,当前我们使用的就是博文《虚幻引擎图文笔记:游戏运行时如何在不更换材质的情况下修改物体材质的参数(比如:颜色)》中的小球,我们稍稍把它抬高一点,以免它一上来就和地面发生碰撞。

在绿色球上方添加一个普通的球体(StaticMeshActor)并勾选它的Simulate Physics选项

在这里插入图片描述

运行一下

我们发现上面的小球落到绿色球上并弹走,说明碰撞发生了,接下来我们要对这个碰撞事件进行响应 在这里插入图片描述

碰撞响应

开启Simulation Generates Hit Events以告诉系统,我们需要检测并响应这个对象的碰撞事件了(为了避免不必要的效率损失,这个选项默认是未开启的)

在这里插入图片描述

然后我们修改一下绿色小球的蓝图

在这里插入图片描述

运行一下

在这里插入图片描述

案例二:对碰撞对象进行过滤,然后响应 效果演示

在这里插入图片描述

搭建场景

这回我们在绿球的上方添加两个小球,并分别为它们添加Tag为"A"和"B"

在这里插入图片描述

注意:这里添加的是ActorTag

在这里插入图片描述

在这里插入图片描述

蓝图

实现碰撞对象过滤的方式有很多,本文使用的是通过ActorTag。这个步骤最关键的就是从Event HitOther引脚获取和自己碰撞的另一个对象。

先获取到和绿球碰撞的Actor的第一个Tag,如果是"A"则让绿球变成红色,如果是"B"则让绿球变成蓝色。

在这里插入图片描述

运行一下

在这里插入图片描述

关注
打赏
1656935939
查看更多评论
立即登录/注册

微信扫码登录

0.0637s