Unity滑鼠在螢幕邊緣移動視角
阿新 • • 發佈:2022-04-08
效果類似RTS遊戲中滑鼠在螢幕邊緣移動視角
在場景中任意新增一個參照物即可
1.首先是2D場景
新建空物體並搭載指令碼CamMove
public class CamMove : MonoBehaviour { public float edgeSize; //會產生移動效果的邊緣寬度 public float moveAmount; //移動速度 public Camera myCamera; //會移動的攝像機 private Vector3 camFollowPos; //用於給攝像機賦值 private bool edgeScrolling = true; //移動開關 // Start is called before the first frame update void Start() { camFollowPos = myCamera.transform.position; //儲存攝像機初始位置,移動是在初始位置的基礎上計算 } void Update() { if (Input.GetKeyDown(KeyCode.Space)) //移動開關 { edgeScrolling = !edgeScrolling; } if (edgeScrolling) //如果開啟 { //螢幕左下角為座標(0, 0) if (Input.mousePosition.x > Screen.width - edgeSize)//如果滑鼠位置在右側 { camFollowPos.x += moveAmount * Time.deltaTime;//就向右移動 } if (Input.mousePosition.x < edgeSize) { camFollowPos.x -= moveAmount * Time.deltaTime; } if (Input.mousePosition.y > Screen.height - edgeSize) { camFollowPos.y += moveAmount * Time.deltaTime; } if (Input.mousePosition.y < edgeSize) { camFollowPos.y -= moveAmount * Time.deltaTime; } myCamera.transform.position = camFollowPos;//重新整理攝像機位置 } } }
這樣滑鼠移動到螢幕邊緣時攝像頭就會移動
2.然後是3D場景
將指令碼中會變化的camFollowPos.y改為camFollowPos.z即可
public class CamMove : MonoBehaviour { ...... if (Input.mousePosition.y > Screen.height - edgeSize) { camFollowPos.z += moveAmount * Time.deltaTime; } if (Input.mousePosition.y < edgeSize) { camFollowPos.z -= moveAmount * Time.deltaTime; } } } }