Unity Mesh基础系列(四)mesh变形(制作一个弹力球)

这篇教程介绍了如何使用Unity创建一个能够变形的弹力球,涉及射线投射、顶点速度处理、弹簧和阻尼效果,以及如何补偿对象变换以保持网格形状。内容包括获取用户输入、将力转换为顶点速度,以及在变换中保持物体形状的方法。
摘要由CSDN通过智能技术生成

目录

1 场景搭建

2 Mesh调节器

2.1 准备

2.2 顶点速度

3 Mesh 调节器的输入

3.1 输入检测

3.2 施加力

3.3 力偏移

4 最基础的变形

4.1 将力转换为速度

4.2 移动顶点

5 保持形状

5.1 弹簧

5.2 阻尼

6 处理变换

6.1 调整缩放

本章内容重点

向对象投射射线并绘制调试线。

将力转换为顶点速度。

用弹簧和阻尼保持形状。

补偿对象转换。

这篇教程的主要内容是介绍一下网格变形。把网格变成一个弹力球,然后戳它。

本教程是CatLikeCoding系列的一部分,原文地址见文章底部。“原创”标识意为原创翻译而非原创教程。

这篇教程是基于上一篇 立方体球 的。它复用了同一个网格,并在此基础上做增加更多的测试模型。本示例适用于Unity5.0.1及以上版本。

(施加了一些按压操作)

1 场景搭建

我们会从一个以单个立方体球体为中心的场景开始。你既可以从头开始,也可以复用上一章 立方体球 的场景,然后删除所有多余的东西。

为了获得平滑的变形效果,球体应该包含相当数量的顶点。我把球体的网格大小设为20,半径设为1。

(从一个规则的立方体球开始)

2 Mesh调节器

创建一个新的MeshDeformer脚本来处理变形。就像立方体球面组件一样,它需要一个mesh filter组件来处理。

(添加完组件之后的展示)

这里需要注意,和前面的章节不同,这里我们只需要mesh filter。这里我们不在乎它是如何得到网格数据的。而现在正在使用我们的程序生成的 立方体球,但其实它可以是任何网格。

2.1 准备

要进行任何的变形,我们都需要访问Mesh。一旦我们有了Mesh,就可以提取到原始的顶点位置。除此之外,还必须跟踪变形过程中的位移点。

在Start方法中对网格及其顶点进行赋值,并将原始顶点复制到移位点。

之所以要使用Start,是因为我们需要在Awake时生成过程网格,因为Awake总是在Start前被调用。这种方法依赖于其他组件在Awake时处理好他们自身的东西,Awake本身的先后顺序并不能保证,所以你其实可以在Unity的设置里自己调节脚本执行顺序,以强制执行第一和最后的脚本。

2.2 顶点速度

当网格变形是由顶点移动造成的。所以我们还必须存储每个顶点的速度。

  • 19
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值