《我的世界》基础篇:生成网格碰撞

本文介绍了如何在Unity中为方块添加网格碰撞,并详细解释了如何同步更新网格数据和碰撞数据,确保游戏运行效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系列概述

      这套教程涵盖了Unity Mesh编程、模拟水算法(water simulations)、方块移动算法(marching-cubes)等等。这是一套比较有深度的教程,可能需要你了解一些Unity和C#相关的知识。

 

预备开始

上一次我们为方块添加了贴图,这一章我将为方块添加网格碰撞。

从下图可知,我们的方块已经有网格数据了,然而我们的Mesh Collider的Mesh属性还没有任何网格数据。

 

 

接下来,让我们来为方块添加网格碰撞。

    

提示

更新网格碰撞数据是很耗性能的,因此我们应该把网格碰撞设计得越简洁越好。如果你不打算使用Unity自带的物理系统,那么你可以百度一下“AABB”碰撞检测算法,这是最简单的碰撞算法之一了。

 

因为网格碰撞会随着网格数据的变化而变化,为了方面网格碰撞的数据能与网格数据同步变化,首先在“MeshDta.cs”脚本中添加下面变量:

 

 

当该布尔变量为true的时候,我们在对网格添加面片数据的时候,也会对网格碰撞的面片数据进行更新,如下图所示:

 

 

请大家注意一下,我们为网格碰撞添加面片的时候使用的是colVertices.Count,而不是vertices.Count。

 

那么接下来,我们为网格碰撞添加顶点,如下图所示:

 

 

好了,让我们回到“Block.cs”脚本中,修改一下网格顶点的添加方式:如下图所示:

 

 

提示

一定要将“Block.cs”原来添加顶点的方式换成转换的方式!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    这样便可在useRenderDataForCol为true的时候,添加网格的顶点数据的同时也添加了网格碰撞的顶点数据,是不是既方便又简单呀。

    

网格碰撞的顶点数据添加好了,接下来添加网格碰撞的三角形数据的步骤和添加顶点的步骤相似。

 

首先处理一下添加三角形的函数,如下图所示:

  

提示

目前我们只使用了AddQuadTriangies()函数,上图的函数也许会在后面的开发中用的,之所以提前写上是因为该函数和本篇文章相关联。

 

接下来回到我们的“Block.cs”脚本的添加下面一行代码就可以跑一跑测试了:

 

    

将这行代码添上之后,按下ctrl+s,之后回到Unity点击Play按钮,将会看到如下图所示效果:

 

好吧,最近老被人催更,所以就花了中午的休息时候简单的弄了一下。因为也没什么难点所以基本上是一笔带过。

 

关于Unity墙外的世界

Unity墙外的世界 --- 这里有国外的经典案例、教程、文章,在这里你将会学到更为先进的Unity开发知识。

更新文章请进入《Unity墙外的世界》公众号中查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值