U3D学习笔记(2)



1.旋转相关
 1.Quaternion.Euler和Quaternion.eulerAngles。它们基本可以满足绝大多数的四元数旋转变换
 2.u3d 中 进行一次旋转时不一起旋转当前坐标系 ,如 transform.Rotate(new Vector3(60, 30, 20));
 称为一次旋转,它是绕自身坐标系旋转的,在这一次旋转完成前,它旋转所用的轴都是没有旋转时的自身的三个维度的轴而不是随着每一次旋转(zxy 的先后顺序)而立刻改变坐标系再旋转。
 3. 物体自旋转使用的函数叫什么transform.Rotate
 4.物体绕某点旋转使用函数叫什么transform.RotateAround
2.Ugui 学习
 1.button 里包含一个text ,如果你双击了button 按钮,就会进入设置button 里的text ,此时不会跳出button 的image 属性设置。
 2.在button 里最后添加点击后作用的对象,然后会自动跳出它的所有脚本组件,选择点击后触发该对象的哪个脚本
 3.锚点:保证控件的四条边到锚点的距离不变,而忽略其它的因素。
  如小地图在右上角,那么你把锚点设置在右上角,则屏幕自适应时永远保证了到右上角的距离就没问题,
  但是锚点假如放到左上角,则保证了小地图到左上角距离不变,
  忽略了到右上角距离这个因素,自适应时就会遮掉小地图。结论就是控件放在画布的哪里,锚点就放可能因为自适应遮掉它的那里。
 4.输入框可以在content type 里设置它的输入形式,如密码形式那么就会输入时变成星号
 5.在任意脚本里写上输入成员(需要使用namespace Unity engine .ui ),然后绑定这个输入框的值为写好的输入框的名字,然后用一个按钮来控制这个输入框输入是否合理
 6.编辑好九宫图后(在图片的Sprite editor 里编辑),在图片的image type 上选slice ,就能以九宫图显示
 7.单选框可以通过创建多个选择框,然后创建一个空物体,添加toggle group 组件,然后把那几个框的group 选为这个组件即只能同时有一个是打勾状态了
 8.滑动条可以把交互性,和游标(handle slider area )去掉当血量条用.
 9.想要修改滑动条和单选框的属性时使用的脚本必须是动态类型的。(默认选择的是静态的)
3.Vector 3类相关
 forward
 写Vector3(0, 0, 1)的简码,也就是向z轴。
 up
 写Vector3(0, 1, 0)的简码,也就是向y轴。
 right
 Shorthand for writing Vector3(1, 0, 0)
 Lerp 线性差值
 Slerp 球面差值(和前者起点和终点一样,但是过程轨迹不一样)
 EulerAngle s 欧拉角,向量所转动的值
 Angle 用来获得两个向量间的夹角。敌人视角大小,坡度大小时会用到
 Distance 两个向量距离
 normalized获取一个向量化成单位向量后的值(不是(1,1,1)啊,是像(1,0,0)这样平方开根号后为1的数!)
 magnitude 获取模大小
 sqrmagnitude 模的平方(开根号很费时间,所以尽量用这个)
 Rotate (eulerAngles : Vector3, relativeTo : Space = Space.Self) : void 绕欧拉角度的向量旋转
 RotateAround (point : Vector3, axis :Vector3, angle : float) : void 点point按axis的轴旋转angle度
 LookAt (target : Transform, worldUp :Vector3 ) : void 让这个物体的z轴面向target物体
4.脚本里公开出来的变量比如public a =20可以在监视面板里改值改成10,但是最后是以监视面板里的值为准,并且脚本里的值不会同步为10.所以一般脚本里的值不要赋值,全部在监视面板里完成
5.Position 等变量是只读的,所以只能通过新的引用来改变它。如transform .rotation =new Vector 3(,,).(new Vector 3来构造)
6.TIme .deltatime 表示每一帧的运行时间,可以理解成时间增量,可以把你在update 里设置的速度规格化,
 使他们在不同帧率的电脑上仍然是一样的速度,不然由于帧率不同调用的update 的速率也不同就会使得速度不同.
 再通俗一点,就是你如果要实现物体瞬移,那么直接update 里写上物体改移动到哪里的坐标,然后一帧就会跑过去,
 如果你想实现慢慢移到那个位置,就要*delt time ,然后就会一秒跑到那个位置,一个按帧一个按秒来算。
 本质就是变成了逐帧渲染而不是一帧渲染了
7.Lerp 函数用于知道始末两点后的平滑过渡
  直接乘以delta time 用于不知道末位置的平滑增长(其实也可以当达到某个值之后停止增长,但显然没有Lerp 方便)
8.U3d的事件分发函数sendmessage 非常强大,只需要g ameobject .broadcast message (函数名称(字符串),dont require receive r ,(传递的变量(可以不写)),就可以把g ameobject 和它的所有子对象里有这个函数全都调用
9.用institution 实例化y预设体或者别的东西,但是实例化过后它本身是无法识别是不是Gameobject 类型的,所以假如是Gameobject 类型可以用强制转换,这样以后才会出现预设体里面的各种组件
10.Vector 3.forward
 Forward 指向z 轴。
 向世界的前方,值永远是0,0,1
 transform .forward 向该物体的前方,就不一定是0,0,1了!
 1、transform.position+= vector3.forward
 等于是在世界坐标的z轴前进。
 2、transform.position+=transform.forward
 等于是物体自身坐标系的z轴前进。
 3、transform.translate(vector3.forward,space.self)
 等于是自身坐标系的z轴前进。
 效果等同于2。
 4、transform.translate(transform.forward,space.self)
 上面出现的奇葩结果就是这个用法引起的,建议不是特殊需要别用这个用法。
 5、transform.translate(vector3.forward,space.world)
 等于是让物体沿着世界坐标的z轴前进。
 效果等同于1。
 6、transform.translate(transform.forward,space.world)
 等于是让物体沿着“物体自身坐标z轴在世界坐标上的方向”前进(等同与物体沿着自身z轴前进)。
 效果等同于2。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值