U3D视角转动与如何制作滚动条

1.如何制作一个能与其他物体配合的滚动条(Scrollbar)?

  1.制作一个物品的大背景(back),一个物品范围(content)。

  2.在back里面添加ScrollRect组件(为了与Scrollbar配合)和mask与image组件(为了遮罩content中超出背景范围的东西)。

  3.在ScrollRect组件中添加制作好的content,Scrollbar。这时滚动条Scrollbar已经和content配合好了。

         这里要注意一下,如果想让格子固定不能左拉和右拉,要把ScrollRect中的horizontal勾掉。修改里面的Movement Type可以修改里面物品的移动方式。

 

 

  4.在content内添加下面这两个组件,就可以实现格子自动排序和content自适应了。

 

2.如何控制相机跟随角色移动:先根据相机位置和角色位置获取一下两者之间的距离。然后只要控制距离不变,角色移动相机也跟着移动就可以了。(可以解决新版动画播放时角色坐标会上下移动,相机也跟着角色移动的情况)

(如何实际解决新版动画播放时模型移动问题,取消掉根节点移动!)

 

 

3.如何实现相机拉近拉远效果:使用Input.GetAxis获取轴。轴可以在unity-Edit-Project settings-Input查看到。

Mouse ScrollWheel表示的就是获取鼠标滚轮。

vector3.magnitude   可以获得这个vector3的长度。

流程:1.使用magnitude函数获得角色与摄像机间的距离。(把向量转换成一段长度)

         2.对距离进行修改。(这个距离是一段长度,float)

         3.为修改后的距离赋予方向并修改原向量。(重新把长度变成向量)

4.如何把一个变量限制在一个范围内:Mathf.Clamp(要限制的变量,最小值,最大值)

(可以拿来限制相机拉近拉远的极限)(这个函数也要写在Update内,因为要通过返回值来限制这个值的范围。)就像下面这样,才能限制住Y的范围

 

5.如何实现鼠标右键控制视野的旋转:

       Input.GetAxis(“Mouse X”)   X是获取鼠标水平方向的移动,Y获取垂直方向的移动

       使用transform.rotateAround()来对相机进行旋转。左右旋转时,为了把角色始终放在视野范围内,要围绕角色的position来旋转。上下旋转时,也要围绕角色position旋转,同时要以相机本身作为旋转的轴进行旋转(也就是绕着相机的x轴旋转,绕世界轴就转飞了!)。旋转后要修改相机与角色之间的距离(原来的距离是固定的,如果不修改那就无法绕着角色旋转,只是原地打转了)。

(通过控制x轴旋转角度来控制视野旋转的最大距离,这个无法通过mathf进行限制,因为rotateAround不止控制旋转角度,还控制位置。这里需要使用if语句进行限制)

       要在旋转之前记录下来位置信息,否则记录的就是已经超过范围的位置信息了。

 

 

posted @ 2017-08-08 22:09  萌新小L  阅读(650)  评论(0编辑  收藏  举报