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

打印 上一主题 下一主题

主题 841|帖子 841|积分 2523

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

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class Initialize_fruit : MonoBehaviour
  5. {
  6.     // Start is called before the first frame update
  7.     //相机移动
  8.     public int panSpeed;
  9.     public float rotationAmount;
  10.     public Vector3 zoomAmount;
  11.     public int moveTime;
  12.     private GameObject mainCamera;
  13.     void Start()
  14.     {
  15.         //相机移动
  16.         panSpeed = 1;
  17.         rotationAmount = 0.1f;
  18.         mainCamera = GameObject.Find("Main Camera");
  19.     }
  20.     // Update is called once per frame
  21.     void Update()
  22.     {
  23.         CameraMove(mainCamera);
  24.     }
  25.     void CameraMove(GameObject camera)
  26.     {//wasd控制前后左右平移,qe控制左右视角旋转,rf控制视角升降。
  27.         var newPos = new Vector3(0, 0, 0);
  28.         Vector3 newRotation = new Vector3(0, 0, 0);
  29.         if (Input.GetKey(KeyCode.UpArrow) || Input.GetKey(KeyCode.W))
  30.         {
  31.             Debug.Log("W or up");
  32.             newPos = camera.transform.forward * panSpeed * Time.deltaTime;
  33.         }
  34.         if (Input.GetKey(KeyCode.DownArrow) || Input.GetKey(KeyCode.S))
  35.         {
  36.             Debug.Log("S or down");
  37.             newPos = -camera.transform.forward * panSpeed * Time.deltaTime;
  38.         }
  39.         if (Input.GetKey(KeyCode.RightArrow) || Input.GetKey(KeyCode.D))
  40.         {
  41.             Debug.Log("D or right");
  42.             newPos = camera.transform.right * panSpeed * Time.deltaTime;
  43.         }
  44.         if (Input.GetKey(KeyCode.LeftArrow) || Input.GetKey(KeyCode.A))
  45.         {
  46.             Debug.Log("A or left");
  47.             newPos = -camera.transform.right * panSpeed * Time.deltaTime;
  48.         }
  49.         if (Input.GetKey(KeyCode.Q))
  50.         {
  51.             Debug.Log("Q");
  52.             newRotation = Vector3.up * rotationAmount;
  53.         }
  54.         if (Input.GetKey(KeyCode.E))
  55.         {
  56.             Debug.Log("E");
  57.             newRotation = Vector3.down * rotationAmount;
  58.         }
  59.         if (Input.GetKey(KeyCode.R))
  60.         {
  61.             Debug.Log("R");
  62.             newPos = Vector3.up * panSpeed * Time.deltaTime;
  63.         }
  64.         if (Input.GetKey(KeyCode.F))
  65.         {
  66.             Debug.Log("F");
  67.             newPos = Vector3.down * panSpeed * Time.deltaTime;
  68.         }
  69.         camera.transform.position += newPos;
  70.         camera.transform.rotation = camera.transform.rotation * Quaternion.Euler(newRotation);
  71.     }
  72. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

数据人与超自然意识

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表