数据人与超自然意识 发表于 2024-12-13 04:28:22

Unity使用脚本控制相机移动、旋转

考虑到以后大概经常必要用到这个功能,所以写篇博客记录下代码。我的代码参考自博客:https://www.cnblogs.com/forever3329/p/17798070.html
功能:键盘wasd控制前后左右平移,qe控制左右视角旋转,rf控制视角升降。
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);

    }
}


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Unity使用脚本控制相机移动、旋转