初学要点

本文详细介绍Unity游戏开发中移动、朝向、旋转等基本操作,涵盖坐标系、向量运算、射线检测、刚体碰撞、资源加载及协程使用等核心内容。同时,解析动画控制、场景管理、自动导航等高级功能,适合初学者和进阶开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一周的记录

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 j
a1c2 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)

  1. Destory 销毁物体的方法
    Destory(gameObject, 时间second)

18.Ray 射线 通过 摄像机 发射
ScreenPointToRay( Input.mousePosition )
Ray 需要两个要点 发射位置 发射方向
Physics 物理类 里面有射线检测 Raycast RaycastHit 这个类可以 包括一个射线碰撞返回点
Raycast( 点 , 点, 射线长度, 层级 )
Raycast(射线 , 鼠标点 , 射线长度 , 层级 )
射线可以用来点击生成 利用射线 找到的 坐标点 来 做一些事情
hit.point 里面包括这射线碰撞到的物体
射线碰撞 需要物体有碰撞其 或者 射线检测器

  1. Input 类的输入操作 Edit 中 Project Settings 里面有可以找到 已经准备好的操作

    关于 mouse Y X Scrollwheel 鼠标上下 左右 滚轮 的 一个操作
    其本质 同理 是 上下 波动 - 2 ~ 2 或者 -1 ~ 1
    利用 该小波动来 对一个 转角 位置 进行一个 变动
    利用 Translate MoveTowards Lerp 进行移动
    利用 eulangular 欧拉角 赋值 rotation 来进行一个转角 变化

  2. 相机跟随
    相机跟随原理

    1. 相机 与 要跟随的物体 保持 一个 offset 距离 (相机 - 跟随物体 = 保持的距离)
    2. 相机位置 每次都要 移动到 跟随物体 + offset 的位置
    3. LateUpdate() 这里放置跟随代码
  3. 关于鼠标的OnMouseXXX 函数
    此类函数见名识意专门用来操作一些鼠标的操作

    回调函数中的一些整体操作
    在Untiy 关联C#中实现 Unity消息中有 生命周期函数 一系列

  4. 注意 世界坐标 / 自身坐标 一种变换
    世界坐标的 X Y Z 轴 位置是不变的
    自身坐标的 X Y Z 轴 相对位置是会改变的 transform 中的坐标点 也是相对于 世界坐标
    TransformDirection( ) 自身方向 转为 世界方向
    TransformPoint( ) 子物体坐标 转为 世界坐标

  5. 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 不可以再次执行

  1. Animation 旧版动画
    关键帧
    Legacy 旧版动画类型

    1.导入模型后选择动画进行 Clip
    动画剪辑 Edit
    有四个面板 Model-模型 Rig-装饰 Animation-动画 Materials-材质
    Rig 中 Animation Type
    动画类型 -None (没有) -Legacy (旧版动画) -Genric (多足 机器人) -Humaniod ( 人形 )
    Animation 中 Warp Mode
    播放模式 -Default -Once( 一次 ) -Loop (循环) -PingPong (来回) -ClampForever(限制)

    1. 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  过度偏差
    
  2. UnityEngine.AI ---------------智能 NavMeshAgent 自动导航
    UnityEngine.SceneManagement------------------ 场景管理 SceneManager.LoadScene( ) 切换场景
    UnityEngine.UI -------------- UI 画面
    UnityEngine.EventTrigger ----------- 事件点击 各类事件
    Random = UnityEngine.Random ------- 随机

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值