素材绘制至Tilemap上:window - 2D - TilePalette
图层排序:Sorting Layer 中设置,排序越下,越靠前,在相同排序中,看图层顺序,数字越大,越靠前。
建立角色:1.直接将角色文件拖拽至层级中
2.在层级中创建 2D Object - Sprites ,再将角色拖拽至Sprites 选项中
给角色添加组件:Add Compoonent
Rigidbody 2D : 将图片变为实体
Collider 2D : 添加碰撞体积
Tilemap Colloder 2D : 给Tilemap添加碰撞体积
按键设置:Edit - Project Setting - Input - Axes
Rigidbody2D.velocity : 刚体的线速度。
锁定Z轴 :Rigidbody 2D面板内可以锁定轴
transform.localScale: 用于旋转等
Time.deltaTime : 完成上一帧所用的时间(以秒为单位)(只读)。
FixedUpdate(): 调用之间的默认时间为 0.02 秒(50 次调用/秒)。使用 Time.fixedDeltaTime 来访问该值。
Animator : 组件
Animator Controller : 允许您为角色或对象安排和维护一组动画剪辑以及关联的动画过渡。
Animation : Window - Animation - Animation 然后点击层级中的组件即可创建(注意需要在相应层级下编辑)
Animator 内可以查看动画绑定,右键animation可以 Make Transition,进行条件转换。
实现跑动效果:在Animator菜单下的Parameters面板里可以设置参数。
选择箭头,在Inspector面板的Conditions设置条件
Has Exit Time : 转换时间
最后需要在代码中实现参数设置
动画循环播放 :在animation 文件中的Inspector中勾选Loop Time
Tybe.GetTybe("name"):获取相应值
LayerMask:指定要在 Physics.Raycast 中使用的层。
Collider2D.IsTouchingLayers:检查该碰撞体是否正在接触指定 layerMask
上的任何碰撞体。
使用圆碰撞体组件:Circle Collider 优化碰撞
GetComponent
[SerializeField]:强制 Unity 对私有字段进行序列化。写在声明前。
镜头跟随角色:1. 思路:使相机的位置与角色一致
使用transform.position 字段,将角色的position赋予给它,让相机的position与角色的position跟随变换。
2.使用Cinemachine Package :
通过 Cinemachine 建立2D虚拟相机
Dead Zone 值可以控制相机的延迟跟随的范围
添加Confiner组件可以规定相机运动的范围
利用 OnTriggerEnter2D(Collider2D):当另一个对象进入附加到该对象的触发器对撞机时触发(仅限 2D 物理)。
Collider2D.tag: 标记可用于标识游戏对象。(tag 在Inspector中设置)
Destroy (Object obj) : 移除 GameObject、组件或资源。(注意物体的碰撞盒改为触发 :在碰撞盒设置中勾选 Is Tigger)
解决角色与场景碰撞不掉落:使用Material
Physics Material 2D:用于调整 2D 物理对象碰撞时这些对象之间的摩擦和弹性。
使用 .enabled可以控制组件的禁用与开启。
创建UI:在进行UI的构建前,需要建立Canvas,在Canvas基础上添加其他UI 组成部分。
UI的编辑界面与游戏编辑界面有区分,双击Canvas组件,自动跳转。
创建Text 类之前需要 using UnityEngine.UI 。
访问 Text类的文字内容时,需要 .text 获得文本内容。
int 类型可以使用 .ToString 将int类型改为string类型变量
关于UI在游戏画面中显示位置因为游戏画面调整而出现问题时:
原因:UI的默认参照区域在中间,需要相应更改
解决:在Inspector 面板中更改参照区域
利用 OnCollisionExit2D() 函数判断碰撞
transform.DetachChildren() 清除子项的父项