Unity核心

回顾

Unity核心学习的主要内容

项目展示

基础知识

认识模型制作流程

2D相关

图片导入设置相关

图片导入概述

参数设置——纹理类型

参数设置——纹理形状

参数设置——高级设置

参数设置——平铺拉伸

参数设置——平台设置(非常重要)

Sprite

Sprite Editor —— Single图片编辑

Sprite Editor —— Multiple图集元素分割

Sprite Editor —— 多边形编辑

用的较少,了解即可

Sprite Renderer

练习:

Sprite Creator

练习:

SpriteMask

练习:

Sorting Group

图集制作

练习

2D物理系统

刚体

碰撞器

练习:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerObject : MonoBehaviour
{
    public float moveSpeed = 5;
    private float h;

    private SpriteRenderer sr;

    private Rigidbody2D rigidbody2D;

    // Start is called before the first frame update
    void Start()
    {
        sr = this.GetComponent<SpriteRenderer>();
        rigidbody2D = this.GetComponent<Rigidbody2D>();
    }

    // Update is called once per frame
    void Update()
    {
        h = Input.GetAxis("Horizontal");
        //this.transform.Translate(Vector2.right * moveSpeed * Time.deltaTime * h);

        //由于 重力 会给予对象 y方向的值 所以我们左右移动 应该只是改变左右速度 y的速度应该保留原有的值
        //rigidbody2D.velocity = Vector2.right * h * moveSpeed;
        rigidbody2D.velocity = new Vector2(h * moveSpeed, rigidbody2D.velocity.y);

        if (h < 0)
            sr.flipX = true;
        else if (h > 0)
            sr.flipX = false;

        if (Input.GetKeyDown(KeyCode.Space))
        {
            //创建子弹预设体
            GameObject obj = Instantiate(Resources.Load<GameObject>("BulletObj"), this.transform.position + new Vector3(sr.flipX ? -0.3f : 0.3f, 0.5f, 0), Quaternion.identity);
            //告诉子弹朝哪个方向动
            obj.GetComponent<BulletMove>().ChangeMoveDir(sr.flipX ? Vector3.left : Vector3.right);
        }

        if (Input.GetKeyDown(KeyCode.J))
        {
            //给它一个向上的瞬时力
            rigidbody2D.AddForce(Vector2.up * 300);
        }

    }
}

物理材质

恒定力

效应器

练习

SpriteShape

Sprite Shape Profile 精灵形状概述文件

Sprite ShapeRenderer 和 Sprite Shape Controller

精灵形状渲染器和控制器

练习:

TileMap——瓦片地图

瓦片资源

瓦片调色器窗口使用

(本节知识点较多,复习时可以配合视频进行)

重点

1.需要修改工程的自定义轴排序 以Y轴决定渲染顺序

x = 0 ; y = 1; z = -0.26;

2.如果地图存在前后关系需要修改TileRenderer的渲染模式

瓦片地图关键脚本和碰撞器

练习:

运用了平台效应器

官方拓展包导入

下载地址:
 https://github.com/Unity-Technologies/2d-extras

官方拓展包——新增瓦片类型

官方拓展包——新增笔刷类型

代码控制相关

动画基础

Animation动画窗口

认识Animation动画窗口

创建编辑动画

代码控制动画(老动画系统)

练习:

Animator动画状态机

有限状态机概念

Animator Controller —— 动画控制器(状态机)

代码控制动画状态机切换

练习:

2D动画

序列帧动画

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Lesson35 : MonoBehaviour
{
    public Sprite[] sprs;

    private SpriteRenderer spriteR;
    private float time = 0;
    private int nowIndex = 0;

    public Animator animator;

    // Start is called before the first frame update
    void Start()
    {
        #region 知识点一 什么是序列帧动画
        //我们最常见的序列帧动画就是我们看的 日本动画片
        //以固定时间间隔 按序列切换图片 就是 序列帧动画的本质
        //当固定时间间隔足够短时 我们肉眼就会认为图片是连续动态的 进而形成动画(会动的画面)

        //它的本质和游戏的帧率概念有点类似

        //原理就是在一个循环中按一定时间间隔不停的切换显示的图片
        #endregion

        #region 知识点二 代码制作序列帧动画
        //我们先尝试用原理 通过代码来实现序列帧动画

        spriteR = this.GetComponent<SpriteRenderer>();
        spriteR.sprite = sprs[nowIndex];
        #endregion

        #region 知识点三 Animation窗口制作序列帧动画
        //方法一:
        //1.创建一个空物体
        //2.创建一个动画
        //3.直接将某一个动作的序列帧拖入窗口中

        //方法二:
        //直接将图片拖入Hierarchy 层级窗口中

        //注意:需要修改动画帧率 来控制动画的播放速度
        #endregion

        #region 知识点四 利用Animator 进行动画控制
        #endregion
    }

    // Update is called once per frame
    void Update()
    {
        //每一次增加帧间隔时间
        time += Time.deltaTime;
        //当帧间隔时间达到某一个条件时 就切换图片
        if (time >= 0.03)
        {
            //索引增加 切换图片
            ++nowIndex;
            //判断是否 重头显示
            if (nowIndex >= sprs.Length)
                nowIndex = 0;
            spriteR.sprite = sprs[nowIndex];
            time = 0;
            
        }

        //知识点四
        if (Input.GetKeyDown(KeyCode.Space))
        {
            animator.SetBool("IsDown", true);
        }
        else if(Input.GetKeyUp(KeyCode.Space))
        {
            animator.SetBool("IsDown", false);
        }
    }
}

练习

2D骨骼动画

2D Animation

2D Animation_骨骼动画制作基础——单张图片编辑

练习

2D Animation_骨骼动画制作基础——图集编辑

练习

2D Animation_骨骼动画制作基础——PSB图集编辑

2D Animation_反向动力学IK

练习

2D Animation_换装_换装资源在同一个文件中

2D Animation_换装——换装资源在不同文件中

Spine

Spine_Spine运行库导入

官方地址:http://http:zh.esotericsoftware.com/

Spine_Spine骨骼动画使用

Spine_Spine骨骼动画参数相关

Spine_Spinr骨骼动画代码控制_Spine骨骼动画代码控制相关

模型导入相关设置

模型导入概述

Model页签

Rig操纵(骨骼)页签)

Animation——动画页签

动画页签概述

基础信息设置

动画剪辑属性基本设置

动画剪辑属性其它设置

预览窗口

Materials——材质纹理页签

3D动画相关

3D动画的使用

练习

后退直接有的是向前走的动画,只要倒着播放就可以

​​​​

添加事件

动画分层和遮罩

练习

动画1D混合

练习:

动画2D混合

练习

动画子状态机

练习:

动画IK控制

练习

先加一个头部的位置获取点

主要知识点是——四元数相关的

通过头部位置点计算出一个获取位置的虚拟点,通过它来控制转向

动作目标匹配

StateMachineBehaviour——状态机行为脚本

状态机复用

角色控制器

导航寻路系统

导航寻路系统概述

导航网格生成

导航网格寻路组件

导航网格外连接组件

导航网格动态障碍组件

通过鼠标右键点击让障碍物失活

总结

做实践项目之前需要先把:UGUI和数据持久化Json学习完。

  • 27
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值