回顾
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 updatevoid Start(){sr = this.GetComponent<SpriteRenderer>();rigidbody2D = this.GetComponent<Rigidbody2D>();}// Update is called once per framevoid 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 updatevoid 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 framevoid 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学习完。