首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Cannon.js中创建“地垫”类型的对象,该对象在被踩到时会做出反应

在Cannon.js中创建“地垫”类型的对象,该对象在被踩到时会做出反应
EN

Stack Overflow用户
提问于 2020-07-21 16:05:56
回答 1查看 113关注 0票数 1

我正在研究Cannon.js,想知道如何实现这一点。

我的用例是,我在地板上有一个圆形区域,如果玩家走进去,他们将触发一些互动。我不想为此做光线投射,因为我已经将Cannon.js用于其他冲突,并且觉得光线投射会增加另一层性能延迟。

现在我的播放器对象是一个简单的球体形状的RigidBody,我通过设置它的速度来移动它。我把交互区做成一个高度很低的圆柱形。然而,当玩家经过这个物体时,碰撞被成功地记录下来,但是玩家失去了控制,并且在移动中有一个明显的凹凸。

有没有为Cannon.js注册这类对象的标准方法?我希望它不会有凹凸,就好像它是一个看不见的物体,玩家可以通过,但它仍然会记录碰撞。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-21 19:44:27

在游戏中解决这个问题的典型方法是使用触发器。因此,物理引擎与此主题无关。

触发器可以实现为简单的边界体积,如边界球体。在three.js中,它是THREE.Sphere的一个实例。在每个模拟步骤中,您将测试触发器是否由播放器激活。您可以通过多种方式完成此操作。例如,仅通过Sphere.containsPoint()测试玩家的位置是否在边界球体内。或者,您将玩家表示为另一个边界体积,如边界球体或AABB (通过THREE.Box3),然后执行交叉点测试。

这两种方法都非常快,应该不会明显影响你的应用程序的性能。即使您正在使用更多可能激活触发器的游戏实体进行这些测试。

下面是一个简单的示例,它演示了Yuka中触发器的概念

https://mugen87.github.io/yuka/examples/entity/trigger/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63010108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档