具有碰撞的Unity网格变形

时间:2018-08-29 18:23:45

标签: unity3d rendering collision-detection mesh

如何通过代码访问Sprite的2D网格,然后通过代码更改Sprite的形状,可以编码吗?

我想制作与Agario类似的游戏

我只是想知道当通过碰撞或触发器触摸物体时如何实现这种果冻形式?

这可以简单地编码为一个圆圈吗?

谢谢。

2 个答案:

答案 0 :(得分:3)

缩放无法获得所需的变形。用agar.io从头开始进行编码变形非常困难。我可以看到执行此操作的多种方法,因此我将从最推荐到最不推荐列出它们:

  1. 从平面3D网格开始,将精灵作为纹理渲染,这样您基本上就可以获得广告牌。然后使用碰撞事件获取contact points,并使用数学方法找出如何移动mesh's vertices来响应联系人。您可以看到某人达到了here的效果,并且您可以看到here领域的完整教程,强烈建议阅读。您的想法是通过接触位置从圆心获得直线并减小其长度,这听起来很合理,尽管实现起来比想像agar.io的实现要复杂得多。

  2. 获取Anima2D,这是一种免费的资产,可以将精灵转换为网格。然后再次使用碰撞事件获取接触点并使网格变形。

  3. 使用Anima2D或具有等效功能的其他资产,并弄清楚如何使用2D骨骼以获得类似agar.io的效果。您也可以在平面/广告​​牌网格上尝试3D骨骼。

  4. 将碰撞数据发送到顶点着色器,该着色器经过编程可变形其渲染的物体。

答案 1 :(得分:0)

您可以使用触发功能联系游戏对象。该功能会自动与GameObject的标签名称一起使用。这是获取Triger function

的方法

此外,您还可以更改彼此接触的GameObject的大小 More info about scaling

您几乎可以编写任何所需的代码,这里大约有Mesh of sprite