查看: 3178|回复: 3
打印 上一主题 下一主题

[其他] 精简好用的u3d摄像机控制脚本

[复制链接]

2722

主题

42

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
38268
精华
111

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2014-10-28 03:17:01 |只看该作者 |倒序浏览
  1.     private Transform player;
  2.     public float scrollSpeed = 6.0f;
  3.     public float roundSpeed = 4.2f;
  4.     public float _vMinLimit = 15f; //y min limit
  5.     public float _vMaxLimit = 55f; //y max limit

  6.     public float zoomMin = 3f;  //zoom min
  7.     public float zoomMax = 8f; //zoom max

  8.     float hh;
  9.     float vv;
  10.     float distance;
  11.      
  12.     // Update is called once per frame
  13.     void Update () {
  14.         if (!player) {
  15.             getPlayer();        
  16.         }
  17.         calPos (aroundView (), scrollView ());

  18.          
  19.     }
  20.     float scrollView(){
  21.         float wheel = Input.GetAxis ("Mouse ScrollWheel");
  22.         float dis = Vector3.Distance (transform.position, player.position);
  23.         dis -= wheel * scrollSpeed;
  24.          
  25.         distance = Mathf.Clamp (distance,zoomMin,zoomMax);
  26.         return distance;

  27.     }
  28.     Quaternion aroundView(){
  29.         float h = Input.GetAxis ("Mouse X");
  30.         float v = Input.GetAxis ("Mouse Y");
  31.         Quaternion rt = Quaternion.Euler(transform.eulerAngles);

  32.         bool rightMouseDown = Input.GetMouseButton (1);
  33.         if (rightMouseDown) {

  34.             hh += h * roundSpeed; // horizontal
  35.             vv -= v;//vertical
  36.             vv = Mathf.Clamp(vv,_vMinLimit,_vMaxLimit);
  37.             rt = Quaternion.Euler(vv,hh,0f);
  38.         }
  39.         return rt;
  40.     }
  41.     //core code
  42.     void calPos(Quaternion angle,float distance){

  43.         Vector3 pos = angle*new Vector3 (0f,0f,-distance) + player.position;//core code
  44.          
  45.         transform.position = pos;
  46.         transform.rotation = angle;//or use the next method
  47. //        transform.LookAt (player.position);
  48.     }

  49.     void getPlayer(){
  50.          
  51.         player = GameObject.FindGameObjectWithTag (TagsEnum.Player.ToString ()).transform;
  52.          hh = transform.eulerAngles.y;
  53.         vv = transform.eulerAngles.x;
  54.         distance = zoomMax;
  55.     }
复制代码
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

hyui    

1

主题

2

听众

6671

积分

高级设计师

Rank: 6Rank: 6

纳金币
2715
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2014-10-28 03:56:54 |只看该作者
good to learn !
回复

使用道具 举报

16

主题

1

听众

1万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
3
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

板凳
发表于 2014-10-30 17:21:03 |只看该作者
谢谢楼主分享
回复

使用道具 举报

74

主题

2

听众

3549

积分

中级设计师

Rank: 5Rank: 5

纳金币
-100
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

地板
发表于 2014-10-31 12:43:50 |只看该作者
感谢分享
回复

使用道具 举报

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

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

GMT+8, 2024-12-1 05:40 , Processed in 0.089363 second(s), 31 queries .

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

© 2008-2019 Narkii Inc.

回顶部