类似LOL、魔兽争霸摄像机的移动,
当鼠标移动到窗口上下左右边界的时候, 移动摄像机。
将屏幕分为9份, 每一份一个标记, 标记划分参考计算机图形学
- //整体移动速度
- var speed=5;
- //关于鼠标滑轮的参数
- var MouseWheelSensitivity = 0.0001f;
- var MouseZoomMin = -2.4f;
- var MouseZoomMax = 1.0f;
- var normalDistance = -1.1;
- //水平和垂直的移动速度
- var horizontalMoveSpeed = 0.1;
- var verticalMoveSpeed = 0.1;
- //上左下右的标记
- var topTag = 8;
- var leftTag = 4;
- var botTag = 2;
- var rightTag = 1;
- function Start () {
- }
- function Update () {
- //获取cursor坐标
- var msPos = Input.mousePosition;
- //边界最小值
- var widthBorder = Screen.width/50;
- var heightBorder = Screen.height/50;
- var x = 0.0f;
- var y = 0.0f;
- //当前鼠标位置标记
- var posTag = 0;
- if(widthBorder<=msPos.x && msPos.x<=Screen.width-widthBorder &&
- heightBorder<=msPos.y && msPos.y<=Screen.height-heightBorder)
- {
- transform.Translate(x,y,y);
- Debug.Log("asd"+msPos.x+" "+msPos.y);
- }
- else
- {
- // posTag
- //
- // 1100 | 1000 | 1001
- // 0100 | 0000 | 0001
- // 0110 | 0010 | 0011
- //
- // 12 | 8 | 9
- // 4 | 0 | 1
- // 6 | 2 | 3
- //
- if(msPos.y>Screen.height-heightBorder)
- posTag = posTag | topTag;
- if(msPos.x<widthBorder)
- posTag = posTag | leftTag;
- if(msPos.y<heightBorder)
- posTag = posTag | botTag;
- if(msPos.x>Screen.width-widthBorder)
- posTag = posTag | rightTag;
- switch(posTag)
- {
- case 0: break;
- case 1: x = horizontalMoveSpeed; break;
- case 2: y = -verticalMoveSpeed; break;
- case 3: x = horizontalMoveSpeed; y = -verticalMoveSpeed; break;
- case 4: x = -horizontalMoveSpeed; break;
- case 6: x = -horizontalMoveSpeed; y = -verticalMoveSpeed; break;
- case 8: y = verticalMoveSpeed; break;
- case 9: x = horizontalMoveSpeed; y = verticalMoveSpeed; break;
- case 12:x = -horizontalMoveSpeed;y = verticalMoveSpeed; break;
- default: break;
- }
- x *= speed*Time.deltaTime;
- y *= speed*Time.deltaTime;
- //
- transform.Translate(x, y, y);
- }
- }