查看: 627|回复: 0
打印 上一主题 下一主题

[其他] 用鼠标调节游戏中摄像机的远近,以及摄像机的视角移动

[复制链接]

9903

主题

126

听众

7万

积分

首席设计师

Rank: 8Rank: 8

纳金币
53488
精华
316

最佳新人 热心会员 灌水之王 活跃会员 突出贡献 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2015-6-25 08:08:11 |只看该作者 |倒序浏览
  1. public class CameraMove : MonoBehaviour {
  2.     public float minFov = 15f;
  3.     public float maxFov = 90f;
  4.     public float sensitivity = 10f;

  5.     private float speed = 400;//摄像机移动速度
  6.     //水平和垂直移动速度
  7.     private float horizontalMoveSpeed = 0.1f;
  8.     private float verticalMoveSpeed = 0.1f;
  9.     //屏幕上下左右标记
  10.     private int topTag = 8;
  11.     private int leftTag = 4;
  12.     private int rightTag = 1;
  13.     private int bottonTag = 2;
  14.     // Use this for initialization
  15.     void Start()
  16.     {
  17.     }
  18.     // Update is called once per frame
  19.     void Update()
  20.     {
  21.         float horizontal = Input.GetAxis("Horizontal");
  22.         float vertical = Input.GetAxis("Vertical");
  23.         transform.position -= Vector3.forward * vertical;
  24.         transform.position -= Vector3.right * horizontal;
  25.         //视野缩进
  26.         float fov = Camera.main.fieldOfView;
  27.         fov += -Input.GetAxis("Mouse ScrollWheel") * sensitivity;
  28.         fov = Mathf.Clamp(fov, minFov, maxFov);
  29.         Camera.main.fieldOfView = fov;

  30.         Vector3 mousePos = Input.mousePosition;//获的当前鼠标坐标
  31.         //边界最小值
  32.         float widthBorder = Screen.width / 50;
  33.         float heightBorder = Screen.width / 50;
  34.         float x = 0f;
  35.         float y = 0f;
  36.         //当前鼠标位置标记
  37.         int posTag = 0;
  38.         if (widthBorder <= mousePos.x && mousePos.x <= Screen.width - widthBorder &&
  39.             heightBorder <= mousePos.y && mousePos.y <= Screen.height - heightBorder)
  40.         {
  41.             transform.Translate(x, y, y);
  42.         }
  43.         else
  44.         {
  45.             if (mousePos.y > Screen.height - heightBorder)
  46.                 posTag = posTag | topTag;
  47.             if (mousePos.x < widthBorder)
  48.                 posTag = posTag | leftTag;
  49.             if (mousePos.y < heightBorder)
  50.                 posTag = posTag | bottonTag;
  51.             if (mousePos.x > Screen.width - widthBorder)
  52.                 posTag = posTag | rightTag;
  53.             //  posTag  
  54.             //  
  55.             // 1100 | 1000 | 1001  
  56.             // 0100 | 0000 | 0001  
  57.             // 0110 | 0010 | 0011  
  58.             //  
  59.             // 12   |  8   |  9  
  60.             // 4    |  0   |  1  
  61.             // 6    |  2   |  3  
  62.             //  
  63.             switch (posTag)
  64.             {
  65.                 case 0:
  66.                     break;
  67.                 case 1:
  68.                     x = horizontalMoveSpeed;
  69.                     break;
  70.                 case 2:
  71.                     y = -verticalMoveSpeed;
  72.                     break;
  73.                 case 3:
  74.                     x = horizontalMoveSpeed;
  75.                     y = -verticalMoveSpeed;
  76.                     break;
  77.                 case 4:
  78.                     x = -horizontalMoveSpeed;
  79.                     break;
  80.                 case 6:
  81.                     x = -horizontalMoveSpeed;
  82.                     y = -verticalMoveSpeed;
  83.                     break;
  84.                 case 8:
  85.                     y = verticalMoveSpeed;
  86.                     break;
  87.                 case 9:
  88.                     x = horizontalMoveSpeed;
  89.                     y = verticalMoveSpeed;
  90.                     break;
  91.                 case 12:
  92.                     x = -horizontalMoveSpeed;
  93.                     y = verticalMoveSpeed;
  94.                     break;
  95.                 default:
  96.                     break;
  97.             }
  98.             x *= speed * Time.deltaTime;
  99.             y *= speed * Time.deltaTime;
  100.             transform.Translate(x, y, y);
  101.         }
  102.     }
  103. }
复制代码
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

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

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2025-7-22 00:53 , Processed in 0.061724 second(s), 29 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部