Unity 移動攝像機的指令碼(類似於魔獸爭霸, LOL的攝像機移動方式)
阿新 • • 發佈:2019-02-15
類似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); } }