前言 Unity 物理引擎中有几种关节可以使用,主要用于实现类似绳索、弹簧、车轴等效果。 关节类型 2D 关节包括不同类型。请参阅每个关节参考页面以了解有关各自属性的详细信息: 2D 距离关节 (Distance Joint 2D) - 连接由刚体物理组件控制的两个游戏对象,使这两个对象保持一定距离。 2D 固定关节 (Fixed Joint 2D) - 将两个对象保持在相对于彼此的位置,确保对象始终以给定位置和角度偏移。例如,对象好像是采用刚性连接方式相连一样:对象不能彼此远离,不能相互靠近,也不能相对于彼此旋转…

2022年5月5日 0条评论 916点热度 1人点赞 大脸猫 阅读全文

前言 游戏地图上会有障碍物和地图边界这种设置,它们需要与游戏角色产生碰撞。跟精灵一样,需要添加collide和Rigidbody组件。 地图分层 在设置障碍物的时候,最好是将地图背景放到一个单独的Tilemap中,然后在将障碍物单独放入一个Tilemap。因为在添加collide组件时是为整个Tilemap添加。 当Tilemap有多层时,需要注意它们的渲染顺序,最好是通过调整Tilemap Renderer 中的order in Layer 属性,来决定地图的渲染顺序,值越小即越先被渲染,即值越小的地图会被后面渲…

2022年5月5日 0条评论 1030点热度 0人点赞 大脸猫 阅读全文

前言 等距瓦片地图为六边形瓦片,但是它将瓦片分为了两部分,一部分用于表示地面,一部分用于表示高度。 像是上图这种形式的瓦片,白色部分用于表示地面,而棕色部分则是代表高度,并且这些瓦片的高度可以进行堆叠,实现类似2.5d的效果。 这是Unity给出的示例,实际上是用这种瓦片构造的。 我觉得是相当炫酷了,项目地址:2D_IsoTilemaps 新建等距瓦片地图 在菜单栏中,GameObeject->2D Object->Tilemap->Isometric Z as Y 这样新建一个瓦片地图。 其中I…

2022年5月5日 0条评论 949点热度 6人点赞 大脸猫 阅读全文

前言 在Unity 2D游戏开发中,Tile Map(瓦片地图)用于建立游戏场景,一般来说游戏中除了角色精灵,还需要复杂的场景作为精灵的背景。像是关卡中的地图,游戏背景,都可以使用瓦片地图来实现,而且十分方便。 什么是瓦片地图 顾名思义,瓦片地图就是瓦片拼接而成的地图,因为游戏中的场景,会有大量的重复元素,将这些元素分解为一个个相同大小的瓦片,然后再使用时在按照需求拼接成不同的场景。这样使用同一批瓦片素材就可以拼接处很多不同的场景,十分方便。 比如这是《星露谷物语》的一个海滩的场景: 这是它的瓦片素材: 将素材切割…

2022年4月26日 0条评论 1009点热度 2人点赞 大脸猫 阅读全文

前言 Unity 引擎中十分重要的两个类,GameObject 与Component。 游戏场景中的几乎所有的东西都可以使用GameObject来表示,而GameObject可以看作是一个Component的容器,大部分功能都由Component来实现。GameObejct需要某个功能时就将对应的Component添加,不需要时就移除,十分的方便。 需要注意的是,C#脚本在添加进GameObject中,也是被一个Component调用的。 游戏对象 GameObject 是 Unity 中场景的构建块,可充当用于确…

2022年4月25日 0条评论 3201点热度 4人点赞 大脸猫 阅读全文

前言 脚本中可以通过预制件创建游戏对象,这样做法相比于直接在Hierarchy Window 中创建更加灵活。 如在游戏角色发射子弹时,这种情况需要游戏角色响应用户输入的同时创建子弹的游戏对象,如果不使用脚本我想不到能怎么去实现这样的需求。 预制件 之前博客中所用到的,在资源文件夹中创建的精灵,动画,游戏对象都是预制件。 也可以通过拖拽Hierarchy Window中的游戏对象到资源文件,这样也会自动生成一个预制件。 个人理解,预制件有点像是高级语言中类的概念,把预制件放到游戏游戏场景中就是实例化一个类对象。 用…

2022年4月24日 0条评论 771点热度 3人点赞 大脸猫 阅读全文

前言 Unity 引擎使用C#语言作为脚本语言,所以在学习Unity之前应该先了解C#的基本语法,如果你是老道的java或者C++程序员,那么相信你大致了解一下C#的语言,就可以达到基本可使用的状态了。 Unity虽然提供了相当多的游戏组件供用户使用,但是要开发一个完整的游戏,仅仅使用组件又是不够的。 游戏脚本可以触发游戏事件,随时修改组件的属性,并以所需的任何方式响应用户的输入。 创建最简单的C#脚本 在资源窗口右键,create-> C# scrite 可以直接创建一个脚本。也可以通过从主菜单选择 Ass…

2022年4月24日 0条评论 484点热度 2人点赞 大脸猫 阅读全文

前言 对于同一个精灵,会有多种状态,在不同的状态下呈现不同的动画效果,这是动画状态机的作用。 简单来说比如角色移动,上下左右四个方向的的移动动画一般是不一样的(有的会是一样的,但那关我什么事?),要在角色朝不同方向移动的时候播放不同的动画。 Animator Controller 在之前的博文 [从零开始的Unity 2D——Animation(帧动画)]() 中有提到如何简单的创建 Animation文件,创建时会自动的创建Animator Controller 文件,并且会自动与精灵做绑定。 如果需要手动的创建…

2022年4月24日 0条评论 739点热度 2人点赞 大脸猫 阅读全文

前言 游戏中精灵在执行移动、跳跃、攻击等动作的时候,都需要播放一些动画使得精灵更像是一个活物。unity为开发者提供了Animation、Animator、AnimationControler三个组件用于实现动画,这篇博文会记录一些简单的使用方法。 处理动画素材 这里首先需要找个地方白嫖一个素材,比如: 这是一个小萝莉奔跑的帧动画,每个动画4帧,然后4个动画分别对应4个奔跑方向。 将素材导入到项目中后,在inspector window中可以看到素材的一些信息,这里需要先将素材中的每一帧切割出来。 切割素材之前需要…

2022年4月24日 0条评论 1643点热度 5人点赞 大脸猫 阅读全文

前言 在项目中使用C++与Lua互相调用,有的时候需要在lua脚本中,对C++的对象进行一些操作。 最开始的做法时,将这些对象声明为单例,或者是将对象放入单例之中,总之就是把对像放在一个全局可获取的地方,然后调用lua调用时获取对象再进行相应的操作。 不过这样的做法十分不优雅,并且当需要操作的对象类型多起来时,也并没有那么方便。 于是有了这么一个思路,将C++对象的指针转为void 通过函数返回值传递到lua脚本中,当需要对这个对象进行一些操作的时候,在操作函数的参数中将void的指针传递回来,然后使用强制类型转换…

2022年4月24日 0条评论 440点热度 1人点赞 大脸猫 阅读全文
123456