Unity学习日记 #基础篇
查找物体
- 无父子关系查找
GameObject.Find(string objName)
GameObject.FindGameObjectWithTag(string tagName)
- 无法查找隐藏对象
- 允许查找同名物体,找到的是最新创建的游戏物体
- 有父子关系查找
- transform.Find(string objPath)
- 1.允许查找隐藏物体
- 2.可以指定完整路径
- transform.parent获取父节点
- 设置父子关系与调整同一父节点下的顺序
- transform.SetParent();设置父节点
- transform.parent = other(transform);
- transform.SetAsFirstSibling();设为该父节点下首位
- transform.SetAsLastSibling();设为该父节点下末位
- transform.SetSiblingIndex(int index);设为该父节点下第index位
坐标与转换
-
position即为世界坐标
-
localPosition是相对与父物体的坐标
- position = localPosition + 父节点position
-
屏幕坐标转世界坐标
-
Vector3 Camera.main.ScreenToWorldPoint(new
-
Vector3(screenPos.x,screenPos.y,zInfo))
-
直接用鼠标坐标转世界坐标,返回的坐标不正确,是因为没有正确的给到要点击屏幕的,转换为
屏幕坐标的z轴,假如我们要让player在xy屏幕点击瞬移
Vector3 playerDir = Camera.main.WorldToScreenPoint(transform.position); Vector3 mousePos = Camera.main.ScreenToWorldPoint( new Vector3(Input.mousePosition.x, Input.mousePosition.y,playerDir.z)); //先求出世界坐标转换为屏幕坐标的z轴(世界坐标z轴与屏幕坐标z轴截然不同) //再通过鼠标屏幕坐标x,屏幕坐标y,上面求的屏幕坐标z,即可让玩家在当前屏幕点击移动
-
-
世界坐标转屏幕坐标
- Vector3 Camera.main.WorldToScreenPoint(new
- Vector3(worldPos.x,worldPos.y,worldPos.x))
-
世界坐标转视口坐标
Vector3 Camera.main.WorldToViewportPoint(new Vector3(worldPos.x,worldPos.y,worldPos.x)) -
视口坐标转世界坐标
Vector3 Camera.main.ViewportToWorldPoint(new Vector3(viewPos.x,viewPos.y,zInfo)) -
视口坐标转屏幕坐标
Camera.main.ViewportToScreenPoint(); -
屏幕坐标转视口坐标
Camera.main.ScreenToViewportPoint();
方向
世界方向
Vector.left Vector.right Vector.up Vector.down Vector.forward Vector.back
自身方向
tramsform.left tramsform.right tramsform.up tramsform.down
tramsform.forward tramsform.back
光源
图形学四种光源
点光源
直射光
聚光灯
区域光
常用组件与其属性
Transform组件
该组件规定了游戏物体的位置(position),旋转(rotation),缩放(scale)
-
移动
-
直接赋值
transform.position = targetPosition;
-
朝某个方向移动
transform.Translate(direction.normalized * speed * Time.deltaTime);
-
-
旋转
transform.Rotate();
transform.RotateAround();
-
缩放
transform.localScale = targetScale;
// 相对于父物体的大小
-
transform.LookAt
是Unity引擎中用于设置物体朝向的一个方法。调用后物体会朝向你指定的物体
AudioClip:声音片段,可对其直接赋值声音文件
Output:音源输出
Mute:是否静音
Bypass Effects:音源滤波开关,是否打开音频特效
Bypass Listener Effe:监听滤波开关
Bypass Reverb Zone:回音混淆开关,当勾选时,不执行回音混淆
Play On Awake:开机自动播放
Loop:循环播放
Priority:播放优先级
Volume:音量大小,范围0到1。
Pitch:播放速度,范围-3到3。
Stereo Pan:声道占比
Spatial Blend:空间混合
Reverb Zone Mix:回音混合
3D Soungd Settings:3d声音设置,一般是不用
Rigidbody刚体组件
Mass:质量。数值越大物体下落越快
Drag:阻力,数值越大物体反向加速度越大
Angular Drag:角阻力,数值越大自身旋转的速度减慢的越快
Use Gravity:是否使用重力
Is Kenematic:是否受物理的影响
Interpolate:设置图像差值
-
默认为none,由于图形更新比物理更新要快,可能会导致物体跳跃式前进。
-
Interpolate模式:物体会根据上一帧物体的位置进行平滑运动。
-
Extrapolate模式:物体会根据下一帧物体的位置进行平滑运动
-
Collision Detection:碰撞检测
对于高速运动的物体来说,当Collision Detection为默认的Discrete时,有可能存在一种情况:前一帧时,物体在碰撞器的一边,下一帧时,物体也已经穿越了碰撞器达到了另一边,以致于检测不到碰撞。这时,我们就需要连续碰撞检测。- Discrete:非连续型检测模式(默认)
- Continuous:连续检测。
更加精细的碰撞检测,但是很耗资源;在这种状态下,当这个刚体与其他普通刚体碰撞时,仍将使Discrete的碰撞检测,但是与没有刚体的Mesh Collider碰撞时就会连续检测了。 - Continuous Dynamic:连续动态检测。
对没有刚体的Mesh Collider或是对处在Continuous或是Continuous Dynamic状态下的刚体使用连续碰撞检测,对其他的刚体使用普通的Discrete检测。
Continuous和Continuous Dynamic的区别在于对Continuous使用何种检测 ,Continuous使用D