Unity复习

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class Question : MonoBehaviour {
  5. int a = ;
  6. Transform target;
  7. #region Question
  8. // 1、有哪些事件函数
  9. // Awake Start Update FixedUpdate LateUpdate OnEnable OnDisable OnDestroy OnGUI
  10. // OnCollisionEnter(Collision col) OnCollisionStay(Collision col) OnCollisionExit(Collision col)
  11. // OnTriggerEnter(Collider o) OnTriggerStay(Collider o) OnTriggerExit(Collider o)
  12.  
  13. // 2、如何查找场景中游戏物体
  14. // GameObject obj = GameObject.Find("ObjName/ChildObjName")
  15.  
  16. // 3、将自己设置为 找到的那个游戏物体的 父物体
  17. // obj.transform.parent = transform;
  18.  
  19. // 4、挂载脚本的必要条件
  20. // 继承MonoBehaviour 、所有的代码无错误、文件名和类名一致、不能是抽象类
  21.  
  22. // 5、物体的移动、旋转
  23.  
  24. // 改变位置的移动
  25. // 1)、往世界的前方移动
  26. // transform.position += Vector3.forward;
  27. // 2)、往自身的前方移动
  28. // transform.position += transform.forward;
  29.  
  30. // API移动
  31. // 1)、往世界的前方移动
  32. // transform.Translate(Vector3.forward, Space.World);
  33. // 2)、往自身的前方移动
  34. // transform.Translate(transform.forward, Space.World);
  35. // transform.Translate(Vector3.forward, Space.Self);
  36.  
  37. // 使物体旋转 (自身)
  38. // 改变欧拉角的形式 来旋转
  39. // 世界的Y轴转
  40. // transform.eulerAngles += Vector3.up;
  41. // 自身的Y轴转
  42. // transform.eulerAngles += transform.up;
  43.  
  44. // API
  45. // 世界的Y轴转
  46. // transform.Rotate(Vector3.up, Space.World)
  47. // 自身的Y轴转
  48. // transform.Rotate(transform.up, Space.World)
  49. // transform.Rotate(Vector3.up)
  50.  
  51. // 使物体旋转 (绕其他物体)
  52. // GameObjet obj; (被绕的游戏物体)
  53. // 绕Y轴转(世界的)
  54. // transform.RotateAround(obj.transform.position, Vector3.up, 1);
  55. // 绕Y轴转(被绕的游戏物体)
  56. // transform.RotateAround(obj.transform.position, obj.transform.up, 1);
  57.  
  58. // 6、如何生成、销毁游戏物体?
  59.  
  60. // 生成(需要有预制体) BulletPrefab
  61. // public GameObject bulletPrefab; // 引用资源中的预制体
  62. // Transform spawnTrans; // 生成的位置及方位
  63. // Instantiate(bulletPrefab, spawnTrans.position /*位置 Vector3*/, Quaternion.identity /*spawnTrans.rotation*/ /*方位 Quaternion*/)
  64.  
  65. // 销毁
  66. // 不要循环调用
  67. // 销毁当前的脚本组件
  68. // 销毁的时机: 在 Update 之后,渲染之前
  69. // Destroy(this);
  70. // 销毁当前的游戏物体
  71. // Destroy(gameObject);
  72. // 5秒以后销毁 当前脚本组件
  73. // Destroy(this, 5);
  74.  
  75. // 7、物体之间发生碰撞的必要条件
  76. // 1)、双方都必须有碰撞器 2)、至少有一个非休眠的刚体 3)、如果一方是运动学刚体,另一个必须是非运动学刚体
  77. // 触发的事件函数 双方的
  78. // OnCollisionEnter(Collision col) OnCollisionStay(Collision col) OnCollisionExit(Collision col)
  79. // 如果勾选了 IsTrigger 会? 在所有的 Collider上
  80. // 会变成触发器,不会再有碰撞效果了
  81.  
  82. // 什么情况下会触发 触发器
  83. // 1)双方都有碰撞器,至少有一方勾选了IsTrigger 2)、至少有一个有刚体
  84. // 触发的事件函数 双方的
  85. // OnTriggerEnter(Collider o) OnTriggerStay(Collider o) OnTriggerExit(Collider o)
  86. #endregion
  87. // Use this for initialization
  88. void Start () {
  89. Destroy(this);
  90. a = ;
  91.  
  92. }
  93.  
  94. // Update is called once per frame
  95. void Update () {
  96.  
  97. }
  98. }

发生碰撞(触发)的必要条件

 
3D数学
3D数学:利用数学的方式解决计算机几何的问题。
坐标系:
一维坐标系(线性坐标系):线性变化
二维坐标系(笛卡尔2D坐标系):笛卡尔发明的
坐标点的分量,代表坐标点距离轴的距离(相当于轴的偏移量)
三维坐标系
标量:只有大小
矢量:大小和方向,坐标系(向量),物理学(力)
 
向量:
概念:有大小有方向的矢量放在坐标系中就可以称之为向量。
特点:没有位置的概念,放在哪都是这个向量(仅表示方向和大小,可以平行移动)。
 
两个坐标系相加无意义
两个坐标系相减:A(3,1) - B(2,0) = c(3-2,1-0) = c(1,1)
坐标大写,向量小写
数学计算:各分量分别相减
几何意义:得到的是一个新的向量,这个向量由B点指向A点,大小是A点和B点之间的距离。
向量方向:从减数指向被减数
 
坐标和向量相加:A(1,1) + b(1,1) = C(2,2)
数学计算:各分量分别相加
几何意义:得到的是一个新的坐标位置,由A坐标点,沿着b向量的方向,移动b向量的长度的距离,得到的新坐标。
A坐标,沿着b向量的方向,移动b向量的长度,得到C坐标
 
向量和向量相加有意义
向量和向量相加:a(1,1) + b(2,1) = c(3,2)
数学计算:各分量分别相加
几何意义:得到的是一个新的向量,让ab向量首尾相连,得到c向量,从a向量的起点指向b向量的终点。
向量相加,平形四边形的对角线
坐标:transform,position
向量:new Vector3(0,0,1)或Vector3.forward

 
向量和向量相减:a(1,1) - b(1,-1) = c(0,2)
数学计算:各分量分别相减
几何意义:得到的是一个新的向量,让ab向量起点重合,得到c向量,从减数向量的终点指向被减数向量的终点。
已知入射光线l,和法向量n,求反射光线r。r = l + 2n
 
向量和标量相乘:a(1,1) * 2 = c(2,2)
数学计算:标量分别乘以各分量
几何意义:得到的是一个新的向量,让原向量在原有方向的基础上,让原向量进行了标量倍数的缩放。
 
勾股定理:直角三角形中,斜边的平方等于两条直角边的平方和。
向量的各分量有什么几何意义:描述这个向量在各个轴向上的投影的长度
向量的模(模长):向量的长度,向量的各分量的平方和再开方
零向量(0,0,0):长度为0,方向任意(模长为零,没有方向)
单位向量:模长为1的向量叫单位向量。
用单位向量表示方向,用标量表示速度,用标量的缩放可以控制速度。
 
向量的标准化:把一个非单位向量变成一个单位向量
让这个向量的各分量分别除以模长(根号2=1.414 根号3=1.732 根号5=2.236)
不是单位向量的向量让各分量分别除以这个向量的模长,就变成了原有方向不变的单位向量。
我们把不是单位向量的向量变成单位向量的过程叫向量的标准化。
向量的标准化后的模长为1
复杂写法

简单写法,用normalized函数

 
作业1:Normalized和normalized区别
共同点:实现规范化,让一个向量保持相同的方向,但它的长度为1.0,如果这个向量太小而不能被规范化,一个零向量将会被返回。
不同点:
Vector3.normalized的特点是改变当前向量,也就是当前向量长度是1
Vector3.Normalized的特点是当前向量是不改变的并且返回一个新的规范化的向量;
magnitude:取标准化后的模长

 
负向量:让一个向量* -1,得到一个新的向量,新的向量和原向量互为负向量(成对出现)。
 
向量和向量的乘法:
点乘(内积)
叉乘(外积)
transform.Translate(Vector3 dir , Space space):同理适用于transform.Rotate()
1、当第一个参数是Vector3.forward的时候,第二个参数如果不填或者填self,结果是沿着自身的前方移动;如果填world,结果是沿着世界的前方移动
2、当第一个参数是Transform算出来的时候,第二个参数必须填world,否则就乱了
这样写会转两次方向

 
作业2:做一个第一人称视角漫游,加个摄像机
 
Unity场景切换
同步加载(当前场景会卡主)和异步加载(加载新的场景,不阻塞当前场景的运行)
新建两个场景

1、把需要切换的场景全部添加到Build Setting
2、添加命名空间using UnityEngine.SceneManagement;
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.SceneManagement; // 场景管理
  5. public class MenuControl : MonoBehaviour {
  6. public float w = ;
  7. public float h = ;
  8. // Use this for initialization
  9. void Start () {
  10.  
  11. }
  12.  
  13. // Update is called once per frame
  14. void Update () {
  15.  
  16. }
  17. void OnGUI()
  18. {
  19. // w h Sceen.Width Sceen.Height x = (Screen.width - w)/2 y = (Screen.height - h)/2
  20. float x = (Screen.width - w) / ;
  21. float y = (Screen.height - h) / ;
  22. if (GUI.Button(new Rect(x, y, w, h), "开 始 游 戏"))
  23. {
  24. // 切换到 游戏场景 同步加载(当前场景会卡主) 异步加载(不会阻塞当前场景的运行)
  25. SceneManager.LoadScene("GameScene");//可以添加Build Setting里的字符串
  26. }
  27. if(GUI.Button(new Rect(x, y + * h, w, h), "退 出 游 戏"))
  28. {
  29. Application.Quit(); // 退出游戏 发布以后才有作用 编辑器状态无效
  30. }
  31. }
  32. }

Unity3D学习笔记(五):坐标系、向量、3D数学的更多相关文章

  1. Directx11学习笔记【九】 3D渲染管线

    原文:Directx11学习笔记[九] 3D渲染管线 原文地址:http://blog.csdn.net/bonchoix/article/details/8298116 3D图形学研究的基本内容,即 ...

  2. Unity3D学习笔记2——绘制一个带纹理的面

    目录 1. 概述 2. 详论 2.1. 网格(Mesh) 2.1.1. 顶点 2.1.2. 顶点索引 2.2. 材质(Material) 2.2.1. 创建材质 2.2.2. 使用材质 2.3. 光照 ...

  3. Unity3D学习笔记3——Unity Shader的初步使用

    目录 1. 概述 2. 详论 2.1. 创建材质 2.2. 着色器 2.2.1. 名称 2.2.2. 属性 2.2.3. SubShader 2.2.3.1. 标签(Tags) 2.2.3.2. 渲染 ...

  4. C#可扩展编程之MEF学习笔记(五):MEF高级进阶

    好久没有写博客了,今天抽空继续写MEF系列的文章.有园友提出这种系列的文章要做个目录,看起来方便,所以就抽空做了一个,放到每篇文章的最后. 前面四篇讲了MEF的基础知识,学完了前四篇,MEF中比较常用 ...

  5. (转)Qt Model/View 学习笔记 (五)——View 类

    Qt Model/View 学习笔记 (五) View 类 概念 在model/view架构中,view从model中获得数据项然后显示给用户.数据显示的方式不必与model提供的表示方式相同,可以与 ...

  6. java之jvm学习笔记五(实践写自己的类装载器)

    java之jvm学习笔记五(实践写自己的类装载器) 课程源码:http://download.csdn.net/detail/yfqnihao/4866501 前面第三和第四节我们一直在强调一句话,类 ...

  7. Learning ROS for Robotics Programming Second Edition学习笔记(五) indigo computer vision

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  8. Typescript 学习笔记五:类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  9. ES6学习笔记<五> Module的操作——import、export、as

    import export 这两个家伙对应的就是es6自己的 module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成一个个功能相对独立但相互依赖的小 ...

  10. muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor

    目录 muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor Connector 系统函数connect 处理非阻塞connect的步骤: Connetor时序图 Accep ...

随机推荐

  1. mysql 数据表的增删改查 目录

    mysql 表的增删改查 mysql 表的增删改查 修改表结构 mysql 复制表 mysql 删除表

  2. java项目连接jdbc报错:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server

    java项目连接jdbc报错:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not creat ...

  3. 网站被XMR恶意挖矿

    发现: 网站首页被恶意更改 网站的关键词和描述被恶意更改 服务器和只要访问此服务器上的网页cup 直线上升100% 排查代码发现js 文件被恶意更改,访问了挖矿网站 操作:删除js 里面的恶意代码,更 ...

  4. [LeetCode] 232. Implement Queue using Stacks_Easy tag: Design

    Implement the following operations of a queue using stacks. push(x) -- Push element x to the back of ...

  5. Must be between v0 and v15, inclusive解决办法

    invoke-static 改为invoke-static/range

  6. Git 全局设置

    Git 全局设置: git config --global user.name "ASxx" git config --global user.email "123456 ...

  7. Linux系统——LNMP分离式部署

    #### 安装nginx ```[root@localhost ~]# tar xf nginx-1.10.2.tar.gz -C /usr/src/[root@localhost ~]# cd /u ...

  8. Typecho博客让文章列表页只显示摘要的方法

    在当前主题的 index.php 文件中找到代码 <?php $this->content('阅读剩余部分...'); ?> 将其替换为 <?php $this->exc ...

  9. iqueryable lambda表达式

    1.groupby 1.group by var newLaborDtos = laborDtos.GroupBy(s => new { s.FinancingAmount, s.Company ...

  10. PKU2418_树种统计(map应用||Trie树)

    Description Hardwoods are the botanical group of trees that have broad leaves, produce a fruit or nu ...