Unity学习日记 #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,即可让玩家在当前屏幕点击移动
      

      通过屏幕坐标转世界坐标ScreenToWorldPoint详细看超链接

  • 世界坐标转屏幕坐标

    • 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:设置图像差值

  1. 默认为none,由于图形更新比物理更新要快,可能会导致物体跳跃式前进。

  2. Interpolate模式:物体会根据上一帧物体的位置进行平滑运动。

  3. Extrapolate模式:物体会根据下一帧物体的位置进行平滑运动

  4. Collision Detection:碰撞检测
    对于高速运动的物体来说,当Collision Detection为默认的Discrete时,有可能存在一种情况:前一帧时,物体在碰撞器的一边,下一帧时,物体也已经穿越了碰撞器达到了另一边,以致于检测不到碰撞。这时,我们就需要连续碰撞检测。

    1. Discrete:非连续型检测模式(默认)
    2. Continuous:连续检测。
      更加精细的碰撞检测,但是很耗资源;在这种状态下,当这个刚体与其他普通刚体碰撞时,仍将使Discrete的碰撞检测,但是与没有刚体的Mesh Collider碰撞时就会连续检测了。
    3. Continuous Dynamic:连续动态检测。
      对没有刚体的Mesh Collider或是对处在Continuous或是Continuous Dynamic状态下的刚体使用连续碰撞检测,对其他的刚体使用普通的Discrete检测。
      Continuous和Continuous Dynamic的区别在于对Continuous使用何种检测 ,Continuous使用D
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值