考虑到以后可能经常需要用到这个功能,所以写篇博客记录下代码。我的代码参考自博客:https://www.cnblogs.com/forever3329/p/17798070.html
功能:键盘wasd控制前后左右平移,qe控制左右视角旋转,rf控制视角升降。
csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Initialize_fruit : MonoBehaviour
{
// Start is called before the first frame update
//相机移动
public int panSpeed;
public float rotationAmount;
public Vector3 zoomAmount;
public int moveTime;
private GameObject mainCamera;
void Start()
{
//相机移动
panSpeed = 1;
rotationAmount = 0.1f;
mainCamera = GameObject.Find("Main Camera");
}
// Update is called once per frame
void Update()
{
CameraMove(mainCamera);
}
void CameraMove(GameObject camera)
{//wasd控制前后左右平移,qe控制左右视角旋转,rf控制视角升降。
var newPos = new Vector3(0, 0, 0);
Vector3 newRotation = new Vector3(0, 0, 0);
if (Input.GetKey(KeyCode.UpArrow) || Input.GetKey(KeyCode.W))
{
Debug.Log("W or up");
newPos = camera.transform.forward * panSpeed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.DownArrow) || Input.GetKey(KeyCode.S))
{
Debug.Log("S or down");
newPos = -camera.transform.forward * panSpeed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.RightArrow) || Input.GetKey(KeyCode.D))
{
Debug.Log("D or right");
newPos = camera.transform.right * panSpeed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.LeftArrow) || Input.GetKey(KeyCode.A))
{
Debug.Log("A or left");
newPos = -camera.transform.right * panSpeed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.Q))
{
Debug.Log("Q");
newRotation = Vector3.up * rotationAmount;
}
if (Input.GetKey(KeyCode.E))
{
Debug.Log("E");
newRotation = Vector3.down * rotationAmount;
}
if (Input.GetKey(KeyCode.R))
{
Debug.Log("R");
newPos = Vector3.up * panSpeed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.F))
{
Debug.Log("F");
newPos = Vector3.down * panSpeed * Time.deltaTime;
}
camera.transform.position += newPos;
camera.transform.rotation = camera.transform.rotation * Quaternion.Euler(newRotation);
}
}