(M)rule tile 以及动态瓦片绘制,组件添加以及常见组件(碰撞,物理引擎)

本文详细介绍了规则瓦片的创建方法,包括规则制定和保存,以及如何制作动态瓦片(如瀑布效果)使用Rigidbody2D、CapsuleCollider2D等组件实现物体运动和碰撞。重点讲解了物理引擎设置和碰撞处理技巧。

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

规则以及动态瓦片的绘制

一.规则瓦片的制作
1.创建规则瓦片文件夹

在这里插入图片描述
点击加号左上角,2d,tile选择rule瓦片

对于选择(select)一种瓦片铺平,添加瓦片制定规则(√×),这个左上角的起始瓦片在只有右边下边右下边有东西时候就会被绘制出来

在这里插入图片描述
如下例子,规则制定该图层上层左侧边沿的固定瓦片,中间位置随机出现的瓦片,以及右侧固定出现的瓦片

在这里插入图片描述

得到如下效果
在这里插入图片描述
可以通过制定这一圈的规则来完成快捷的场景绘制如下

在这里插入图片描述

可以看到现在这一个小方块代表的就是带着一套规则的地板场景,拖拽到对应的层的调色盘中,还是一个小方块

拐角设置,需要注意优先级,由于规则与中间瓦片相似,放在中间瓦片上边

在这里插入图片描述
从而达到如下效果

在这里插入图片描述

四个角都需要设置

在这里插入图片描述

注意在这里要保存(J就在上图位置要保存)TT

对相似的rule瓦片可以直接通过ctrlD来粘贴出来一个。

二.流动效果(动态瓦片)

1.制作瀑布左侧往下流的动态效果

创建文件夹
对左侧四张需要逐帧向下一张播放的图片进行添加,保存,play后出现流动效果

人物组件添加

在这里插入图片描述

①Rigidbody 2D

the control of the physics engine

objects can only move in the XY plane

关于重力的设置可以在edit里边进行编辑如下

数值模拟的是现实世界的重力

人物添加该组件,会自然的下落

②Capsule Collider 2D

no vertex corners and has a continuous round circumference,The capsule shape is considered solid and not hollow

通过editcollider点击后在目标上完成图形碰撞大小的改变
在这里插入图片描述
③Tilemap Collider 2D

两个物体需要同时具有体积才可以碰撞,为场景中的瓦片添加碰撞

在这里插入图片描述

但此时这种大物体在运行时候是以一个一个的检测是否碰撞的状态运行的,需要添加组件让他们作为一个整体。

④Composite Collider 2D
merges the shapes of any Box Collider 2D or Polygon Collider 2D that you set it up to use

需要注意两点
1.添加这个组件时候自动加入了rigidbody组件,play,场景掉出去啦

在这里插入图片描述

更改rigidbody的body type为静态

在这里插入图片描述
2.胶囊碰撞存在斜着掉下来勇士摔倒的问题,需要锁定,在勇士的组件下锁定y轴

在这里插入图片描述

在这个人物的物理引擎设置中,如上图
mass为质量,不同质量的物体会有碰撞能力的差异
collision detection检测碰撞频率,此时为间歇性,选择continuous后持续监测碰撞

### 使用 Rule Tile 创建具有正确遮挡关系的树木 在 Unity 中使用 `RuleTile` 可以为游戏中的地图提供更复杂的交互逻辑,特别是对于像树木这样的对象,可以实现更加真实的视觉效果和物理行为。下面是如何利用 `RuleTile` 来创建带有正确遮挡关系的树木。 #### 准备工作 为了使树木能够根据周围环境自动调整其显示方式并处理好与其他物体之间的相对位置关系,在开始前需先准备好相应的资源: - 导入所需的树形图像作为纹理贴图。 - 利用 Assets > Create > Tile 命令来生成一个新的 Tile 文件,并将其与上述导入的纹理图片关联起来[^2]。 #### 设置 RuleTile 接着定义一个继承自 `RuleTile` 的类用于描述不同情况下应该渲染哪种版本的树木模型。这一步骤的关键在于配置规则条件以及对应的输出结果。具体来说就是当检测到某个方向上有其他瓦片存在时,则选择合适的变体来进行绘制,从而达到自然过渡的效果。 ```csharp using UnityEngine.Tilemaps; public class TreeWithOcclusion : RuleTile { public Sprite[] treeSprites; protected override void Initialize() { base.Initialize(); SetAllPassable(true); AddMatchRule(new MatchRule( new int[,] { {-1,0}, { 0,0} }, (context) => GetSpriteIndex(context), this)); } private int GetSpriteIndex(RuleContext context){ // 实现判断逻辑以决定返回哪个索引值所指向的精灵帧 return 0; // 这里只是一个占位符函数 } } ``` 这段代码展示了如何基于上下文信息动态选取不同的树木外观。实际应用中可能还需要考虑更多维度的因素比如地形高度差等因素影响最终呈现样式[^1]。 #### 配置 Grid 和 Palette 最后要确保场景内的网格(Grid)参数匹配新建立的颜色板(Palette),以便于后续操作过程中不会出现问题。可以通过点击窗口顶部菜单栏里的 **Window -> 2D -> Tile Palette** 打开面板界面,之后再通过右下角按钮新建调色盘实例,注意内部各项设定应同先前指定好的Grid保持同步[^3]。 完成以上步骤后就可以顺利地在游戏中布置具备合理遮蔽特性的植被元素啦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值