第一周的记录
1.--------------------------------------移动----------------------------------------------------------
transfrom.Translate( v3.forward * speed *Time.datelate ) 一直向一个方向移动
Vector3.Lerp(V3 origin , V3 dest , 0.1f); 递减的一个缓慢移动
Vector3.MoveTowards(V3 origin,V3 dest, speed ); 一个 匀速移动的
2.--------------------------------------朝向-----------------------------------------------------------
transfrom.LookAt(Vector3 dest);
Quaternion.LookRotation(Vector3 direction);
3.--------------------------------------旋转-----------------------------------------------------------
transfrom.Rotation( ) 自转
transform.AroundRotation( ) 公转
transform.eulerAngles = new Vector3(0,0,0,0); //给 欧拉角赋值
transform.rotation = new Quaternion(0,0,0,0); //给 转角赋值
4.--------------------------------------坐标系---------------------------------------------------------
相对坐标系 localposition 本地坐标系 就是指相对与父物体的坐标
世界坐标系 position 绝对坐标系 在Unity 世界坐标系中的位置 相对于原点0.0.0 的位置
5.---------------------------------点乘-----------------------------------------------------------------
几何意义 : 比较两个向量的相似程度
x 轴取 角度值
0 90 180 270 360
y 轴取 值范围(1 ~ -1)
1 0 -1 0 1
Unity 中可以用来算取 位置
6.--------------------------------叉乘------------------------------------------------------------------
i j k
a1 b1 c1
a2 b2 c2
主 i* b1b2 jc1a2 ka1b2 减去
副 k b1a2 ja1c2 i * b2c1
i* (b1b2 - b2c1) x 轴 点
j*(c1a2 - a1c2) y 轴 点
k* (a1b2 - b1a2) z 轴 点
求出一个 新的 向量 主向量 - 副向量 = 新向量
得出一个 V3 世界空间新 坐标叉乘 求 两个 向量的
|向量1||向量2|Sin<x1,x2>
Cross(1,2) == - Cross(2,1)
Unity 中 求法向量
i j k
1 1 1
3 3 0
0 - 3 3-0 3-3
7.--------------------------------------------欧拉角-----------------------------------------------------
注意: 欧拉角中有个万向锁 使用 Quaternion 可以解决万向锁的问题
new Quaternion(0,0,0,0); 四位数
8.---------------------------------------------坐标系----------------------------------------------------
世界坐标系 0.0.0 原点不变
屏幕坐标系 0.0.0 左下角 分辨率 右上角
GUI坐标系 0.0.0 左上角 分辨率 右下角
9.-----------------------------------------------协程----------------------------------------------------
协程类似于多线程
1.可以做延时操作
StartCoroutine( 方法名 ) 手动开启协程
IEnumerator 方法名( )
{
yield return null; //同 Update 同步执行
new waitFormSecond();
}
调用方法 函数:
Invoke(“方法名”, 延时);
InvokeRepeating(“方法名”, 延时 second , 频率 );
Time.delatTime += 每帧
以上方法均可以用作计时器来使用达到某种效果
10.----------------------------------------单例模式-----------------------------------------------------
泛型 单例脚本 不可以用来挂载 可以用来 继承使用
简单的 单利 直接 脚本中使用就可以了
11.------------------Unity 中常用模型格式-------音乐格式---------------------------------------------
fbx 3ds maya dae mp3 ogg wav flac
12.--------------------------------------刚体-----碰撞---------------------------------------------------
两个物体都要添加collision 碰撞器 主动 方 添加刚体 Rigidbody
如果 不使用 碰撞 选择 is Trigger 可以使用触发函数来操作
13.-----------------------------------向量的操作--------------------------------------------------------
Vectoer 3 可以当做点 也可以当做 方向
向量可以进行 简单运算
常用的操作
向量 = 终点 - 起点 这是求一个方向 也可以是一段 距离
终点 = 起点 + 向量
起点 = 终点 - 向量
向量 = 向量 + - 向量
14.---------------------------------------生成克隆体----------------------------------------------------
Instantiate( Pretab );
Instantiate( Pretab ,V3 pos, 是否使用世界坐标 );
Instantiate( Pretab ,V3 pos, Quaternion.identity );
15.预制体加载
Resources 文件夹 使用Resources.Load<>(“name”) 来加载
16.轴值的使用
Vertical 竖着 w是(0 ~ 1) s 是( 0 ~ -1)
Horizontal 横着 a是(0 ~ -1) d 是( 0 ~ 1)
- Destory 销毁物体的方法
Destory(gameObject, 时间second)
18.Ray 射线 通过 摄像机 发射
ScreenPointToRay( Input.mousePosition )
Ray 需要两个要点 发射位置 发射方向
Physics 物理类 里面有射线检测 Raycast RaycastHit 这个类可以 包括一个射线碰撞返回点
Raycast( 点 , 点, 射线长度, 层级 )
Raycast(射线 , 鼠标点 , 射线长度 , 层级 )
射线可以用来点击生成 利用射线 找到的 坐标点 来 做一些事情
hit.point 里面包括这射线碰撞到的物体
射线碰撞 需要物体有碰撞其 或者 射线检测器
-
Input 类的输入操作 Edit 中 Project Settings 里面有可以找到 已经准备好的操作
关于 mouse Y X Scrollwheel 鼠标上下 左右 滚轮 的 一个操作
其本质 同理 是 上下 波动 - 2 ~ 2 或者 -1 ~ 1
利用 该小波动来 对一个 转角 位置 进行一个 变动
利用 Translate MoveTowards Lerp 进行移动
利用 eulangular 欧拉角 赋值 rotation 来进行一个转角 变化 -
相机跟随
相机跟随原理- 相机 与 要跟随的物体 保持 一个 offset 距离 (相机 - 跟随物体 = 保持的距离)
- 相机位置 每次都要 移动到 跟随物体 + offset 的位置
- LateUpdate() 这里放置跟随代码
-
关于鼠标的OnMouseXXX 函数
此类函数见名识意专门用来操作一些鼠标的操作回调函数中的一些整体操作
在Untiy 关联C#中实现 Unity消息中有 生命周期函数 一系列 -
注意 世界坐标 / 自身坐标 一种变换
世界坐标的 X Y Z 轴 位置是不变的
自身坐标的 X Y Z 轴 相对位置是会改变的 transform 中的坐标点 也是相对于 世界坐标
TransformDirection( ) 自身方向 转为 世界方向
TransformPoint( ) 子物体坐标 转为 世界坐标 -
TextAssets 类
该类用来接收text 文件的一个加载 通过Resources 来加载文件
文件获取后的text 直接得到文本文件的所有内容 通过切割的方式可以来截取
注意: 中文必须文件是UTF-8格式才可以读取
24.Mesh类
通常MeshRenderer 渲染
MeshFilter 网格过滤器 画三角形 拼装的网格
25.CompareTag( ) 与 tag 比较
方法 比属性 省时间
26.ScenceManager 场景管理类
这个类用来 场景变换
loadScence( 0 ) 索引 或者 名称来切换
27.自动导航
NavMeshAgent 这个组件 要求地面 被烘焙 static NavMeshAgent
使用 导航的 物体 添加 该组件
28.协程
Start 可以用来 当协程
协程 需要 手动开启 可以手动 关闭 也可以 等执行结束完自己结束
StartCoroutine( 方法( ) );
StopCoroutine( 方法 ( ) );
协程类似 多线程 用来帮助执行其他的一些东西
协程 挂载脚本后 脚本active false 再 true 不可以再次执行
-
Animation 旧版动画
关键帧
Legacy 旧版动画类型1.导入模型后选择动画进行 Clip
动画剪辑 Edit
有四个面板 Model-模型 Rig-装饰 Animation-动画 Materials-材质
Rig 中 Animation Type
动画类型 -None (没有) -Legacy (旧版动画) -Genric (多足 机器人) -Humaniod ( 人形 )
Animation 中 Warp Mode
播放模式 -Default -Once( 一次 ) -Loop (循环) -PingPong (来回) -ClampForever(限制)- Animation Ctrl+6 在动画 控制
关键帧 事件添加 Add Animation Event 从脚本中找到 对应事件 函数来 进行一个动画事件回调
Dopesheet 添加帧 Add keyframe
Curves 曲线图 调节 动画
Animator 新版动画
类型
Genric 多足 机器人
Humanoid 人形1.导入模型后选择动画进行Clip
有四个面板 Model-模型 Rig-装饰 Animation-动画 Materials-材质
Rig 中 Animation Type
动画类型 -None (没有) -Legacy (旧版动画) -Genric (多足 机器人) -Humaniod ( 人形 )
选择新版模型会有 一个 Configure 选项 安装 骨骼 ( 骨骼 文件后缀名 .ht)
Body ------- Hips 臀 Spine 脊柱 Chest胸 Upper Chest
Proximal Intermediate Distal
Left Hand ----------Thumb Index Middle Ring Little
Head 头 ----------- Neck 脖子 Left Eye Right 左右眼 Jaw下巴2.Animator 动画Clip 条 中 有Loop Time Loop Pose 可以 控制播放时间 Loop Time Loop Pose Events 这里直接在动画中的某一帧 给添加一个 事件 layer Ik Pass 反向动力学 Animator 剪切控制 面板 Layers 层级 Pareameaters动画过度参数 Blending 动画层级融合 Override 表示当前层的动画覆盖掉其它层的动画 Additive 表示当前层的动画的量添加到其他层的动画 3.融合树 是一种特殊的动画状态 通过改变 过渡参数的值 接近阀值来播放动画 Automate 自动阀值 1D 融合树 偏向 于 使用的是 有相同动画的融合 2D Simple BlendTree 简单方向 2D FreeBlend Tree 4. 动画编辑中 动画过度 transitions 中 Settings 中主要有 Exit Time 结束时间 Fixed Duration 固定持续 Transition Duration 固定时间 Transition Offset 过度偏差
- Animation Ctrl+6 在动画 控制
-
UnityEngine.AI ---------------智能 NavMeshAgent 自动导航
UnityEngine.SceneManagement------------------ 场景管理 SceneManager.LoadScene( ) 切换场景
UnityEngine.UI -------------- UI 画面
UnityEngine.EventTrigger ----------- 事件点击 各类事件
Random = UnityEngine.Random ------- 随机