美文网首页
Unity3D - 2D

Unity3D - 2D

作者: 李霖弢 | 来源:发表于2024-01-03 09:27 被阅读0次

    2D游戏导入的图片,Texture Type会默认变为 Sprite(2D and UI),此时可以直接将其拖拽进场景成为GameObject;也可创建一个空物体,手动添加Sprite Renderer组件。

    Sprite 属性

    • Sprite Mode:Single(默认)。Multiple(包含多个精灵,可分割或动画)。
      注意,2D纹理本身不是精灵,其下附属的展开内容才是精灵。
    • Pixels Per Unit:Unity中每个格子对应图中多少像素

    Tilemap(瓦片地图)

    该功能依赖包管理器中安装2D Tilemap Editor包。
    将场景平面划分为网格状,并在网格上绘制内容。

    瓦片地图
    1. 创建瓦片地图 Hierarchy - Create - 2D Object - Tilemap - Rectangular
    2. 创建调色板 Window - 2D -Tile Palette(打开调色板窗口) - Create New Palette
      将精灵/瓦片拖拽入调色板(一个调色板里可以容纳多个),资源管理器会自动创建瓦片文件。
    3. 蘸取调色板中的格子,即可在场景中刷涂。刷涂部分的内容会自动加入第一步创建的瓦片地图。
    拆分瓦片集

    拆分后可以让 2D Texture 下出现多个 Sprite

    1. 选中一个Sprite - Sprite Mode - Multiple
    2. Sprite Editor - slice
      其中 Automatic 会根据透明像素自动分割,也可以手动在画面中拖拽出绿框进行分割
    为 Tilemap 设置碰撞
    • 方法1:在需要存在碰撞的位置创建空物体,并为其添加Collider组件
    • 方法2:为Tilemap 添加 Tilemap Collider 2D(瓦片碰撞)组件和 Composite Colloder 2D (复合碰撞体)组件
      前者会让该Tilemap中所有Collider TypeSprite(默认值)的瓦片都具有碰撞效果(对于不想碰撞的瓦片,可以选中其瓦片源文件,将Collider Type改为None
      后者会合并前者中的多处碰撞以减少优化性能(因此会自动额外添加刚体组件)。且添加后还需要勾选前者的Used by Composite选项才能生效。

    精灵平铺

    2D物体-》Sprite Renderer组件-》Draw Mode

    • Simple:默认值,强行拉伸
    • Sliced:根据九宫格切片,中间部分拉升,四角不变
    • Tiled:根据九宫格切片,中间部分重复平铺,四角不变

    其中九宫格切片可在Sprite Editor中拖动绿线调整(默认在四边)。


    2D物体的渲染层级

    • Sprite Renderer 组件 - Additional Settings - Order in Layer
      数字越大渲染越晚,表现为覆盖在最高层

    • Edit - Project Settings - Graphic - Camera Settings - Tranparency Sort Mode
      可用于控制相同 layer 时渲染的先后顺序
      若选为 Custom Axis 则按照 Tranparency Sort Axis 渲染。可实现随着物体移动,根据坐标位置不同产生不同的优先级
      可通过Sprite Renderer 组件 - Sprite Sort Point切换中心点或轴心点来进行坐标位置比较
      其中轴心点(Pivot)的位置默认在中心点(Center),可以在精灵的设置(Sprite Editor)中修改,拖拽蓝色圆圈或直接设置均可。


    动画

    1. 为游戏对象添加 Animator 动画组件
      可将动画分配给场景中的游戏对象,比老版本的Animation组件更方便。

    2. Assets->右击->Create->Animator Controller 创建动画控制器
      可根据当前游戏对象的状态控制播放/切换对应的动画(也称为动画状态机)。

    3. Window->Animation->Animation 打开动画制作窗口

    4. 选中带有Animator组件并配置好Animator Controller的游戏对象,在动画管理窗口中创建动画.anim文件(即一个Controller对应多个anim)

    5. 操作时间轴
      可以通过鼠标框选选中时间轴中多个关键帧,然后拖动以等比缩放时间

      • 点击Add Peoperty,可以选择该物体已有组件的某个属性,并在时间轴上设置关键帧
      • 点击录制按钮,然后直接在对应帧进行游戏对象的修改操作,并自动记录
      • 将资源中的精灵拖拽进时间轴(本质是改变了Sprite Renderer组件Sprite属性)
    6. Window->Animation->Animator 打开动画控制器窗口
      可以将.anim动画文件拖拽以添加进动画控制器窗口
      从Entry出发的为必播动画(default),可通过右键设置。

      • Layers:动画层级,用于处理多个动画同时生效(如边跑边射击)时的优先级
      • Parameters:用于控制多个动画状态之间切换的变量
        在不同状态和动画之间通过连线(Make Transition),表示可切换关系。
        在Script中修改变量后,一旦满足连线的检查器中Conditions设置的变量条件,就会切换到相应的动画:
    private Animator animator;
    
    animator = GetComponent<Animator>();
    animator.SetInteger("变量名", -1);
    

    相关文章

      网友评论

          本文标题:Unity3D - 2D

          本文链接:https://www.haomeiwen.com/subject/xcpundtx.html