Unity 移动摄像机的脚本(类似于魔兽争霸, LOL的摄像机移动方式)

类似LOL、魔兽争霸摄像机的移动, 


当鼠标移动到窗口上下左右边界的时候, 移动摄像机。 


将屏幕分为9份, 每一份一个标记, 标记划分参考计算机图形学


[java]  view plain copy
  1. //整体移动速度  
  2. var speed=5;   
  3.   
  4. //关于鼠标滑轮的参数  
  5. var MouseWheelSensitivity = 0.0001f;   
  6. var MouseZoomMin = -2.4f;   
  7. var MouseZoomMax = 1.0f;  
  8. var normalDistance = -1.1;   
  9.   
  10. //水平和垂直的移动速度  
  11. var horizontalMoveSpeed = 0.1;   
  12. var verticalMoveSpeed = 0.1;   
  13.   
  14. //上左下右的标记  
  15. var topTag = 8;   
  16. var leftTag = 4;   
  17. var botTag = 2;   
  18. var rightTag = 1;  
  19.   
  20. function Start () {  
  21.       
  22. }  
  23.   
  24. function Update () {  
  25.       
  26.     //获取cursor坐标  
  27.     var msPos = Input.mousePosition;  
  28.       
  29.     //边界最小值  
  30.     var widthBorder = Screen.width/50;   
  31.     var heightBorder = Screen.height/50;   
  32.       
  33.     var x = 0.0f;   
  34.     var y = 0.0f;   
  35.       
  36.     //当前鼠标位置标记  
  37.     var posTag = 0;   
  38.       
  39.     if(widthBorder<=msPos.x && msPos.x<=Screen.width-widthBorder &&  
  40.         heightBorder<=msPos.y && msPos.y<=Screen.height-heightBorder)  
  41.     {  
  42.         transform.Translate(x,y,y);   
  43.         Debug.Log("asd"+msPos.x+" "+msPos.y);  
  44.     }  
  45.     else   
  46.     {  
  47.     //  posTag  
  48.     //  
  49.     // 1100 | 1000 | 1001  
  50.     // 0100 | 0000 | 0001  
  51.     // 0110 | 0010 | 0011  
  52.     //  
  53.     // 12   |  8   |  9  
  54.     // 4    |  0   |  1  
  55.     // 6    |  2   |  3  
  56.     //  
  57.         if(msPos.y>Screen.height-heightBorder)  
  58.             posTag = posTag | topTag;   
  59.         if(msPos.x<widthBorder)  
  60.             posTag = posTag | leftTag;  
  61.         if(msPos.y<heightBorder)   
  62.             posTag = posTag | botTag;  
  63.         if(msPos.x>Screen.width-widthBorder)  
  64.             posTag = posTag | rightTag;  
  65.               
  66.         switch(posTag)  
  67.         {  
  68.         case 0break;   
  69.         case 1: x = horizontalMoveSpeed; break;   
  70.         case 2: y = -verticalMoveSpeed; break;   
  71.         case 3: x = horizontalMoveSpeed; y = -verticalMoveSpeed; break;   
  72.         case 4: x = -horizontalMoveSpeed; break;  
  73.         case 6: x = -horizontalMoveSpeed; y = -verticalMoveSpeed; break;  
  74.         case 8: y = verticalMoveSpeed; break;  
  75.         case 9: x = horizontalMoveSpeed; y = verticalMoveSpeed; break;  
  76.         case 12:x = -horizontalMoveSpeed;y = verticalMoveSpeed; break;  
  77.         defaultbreak;   
  78.         }  
  79.           
  80.         x *= speed*Time.deltaTime;  
  81.         y *= speed*Time.deltaTime;  
  82.           
  83.         //  
  84.         transform.Translate(x, y, y);   
  85.     }  
  86.           
  87.       
  88. }  

猜你喜欢

转载自blog.csdn.net/merryken/article/details/45916521