zoukankan      html  css  js  c++  java
  • unity3d 控制摄像头控制

    一个控制摄像头移动的脚本,直接绑定到摄像机就可以使用.功能描述如下:

    1.鼠标左键拖动观察

    2.鼠标右键定点旋转

    3.鼠标滚轴放大缩小

    4.鼠标左键快速双击进行定点放大

     1 #pragma strict
     2 /***
     3 **摄影机控制
     4 *@author felly
     5 */
     6 
     7 private var rayRotate :Ray = Ray(Vector3.zero, Vector3(0,1,0));
     8 private var rayTranslate :Ray = Ray(Vector3.zero, Vector3(0,1,0));
     9 private var hitInfo : RaycastHit ;
    10 
    11 private var preTime :float = 0.0;
    12 
    13 
    14 //它标记是否能旋转
    15 private var flag :boolean = false ;
    16 
    17 function Update () {///事件监视
    18 
    19      var direction :Vector3 = Vector3.zero;
    20      var px:float ;
    21      var pz:float ;
    22      
    23      
    24      if(Input.GetMouseButtonDown(0)){
    25          rayTranslate = camera.ScreenPointToRay(Input.mousePosition);
    26         //以摄像机为起点画射线,射线去地板碰撞点就是那个焦点
    27         Physics.Raycast(camera.transform.position, rayTranslate.direction, hitInfo);
    28         if (Time.time - preTime  < 0.3f ){
    29           hitInfo.point=hitInfo.point+Vector3(0,5,0);
    30           transform.position=Vector3.MoveTowards(camera.transform.position,hitInfo.point,10.0);
    31         }
    32          
    33          preTime = Time.time ;
    34      }
    35      
    36      //上下左右拖动
    37     if(Input.GetMouseButton(0)){
    38         px = Input.GetAxis("Mouse X") ;
    39         pz = Input.GetAxis("Mouse Y") ;
    40         direction = Vector3(px, pz, pz);
    41         transform.Translate( -1 * direction * 30 * Time.deltaTime);
    42     }
    43     
    44     //滚轴放到缩小
    45     pz = Input.GetAxis("Mouse ScrollWheel");
    46     direction = Vector3(0, 0, pz);
    47     transform.Translate(direction * 100 * Time.deltaTime);
    48     
    49     //旋转
    50     if(Input.GetMouseButtonDown(1)){
    51         rayRotate = camera.ScreenPointToRay(Input.mousePosition);
    52         flag = true ;
    53     }
    54     if(Input.GetMouseButtonUp(1)){
    55         rayRotate = Ray(Vector3.zero, Vector3(0,1,0));
    56         flag = false ;
    57     }
    58     if(Input.GetMouseButton(1) && flag){
    59         Physics.Raycast(camera.transform.position, rayRotate.direction, hitInfo);
    60         px = Input.GetAxis("Mouse X") ;
    61         transform.RotateAround(hitInfo.point, Vector3.up, 100 * px * Time.deltaTime);
    62     }
    63 }
  • 相关阅读:
    【MongoDB】windows下搭建Mongo主(Master)/从(slave)数据库同步
    视图与暂时表
    Highcharts构建分组分类坐标轴
    iOS可持续化集成: Jenkins + bundler + cocoapods + shenzhen + fastlane + pgyer
    Internationalization composition diagram
    ASCII表 基本记忆 -- C
    Java内部类
    Idea过期继续激活~
    Spark SQL 用户自定义函数UDF、用户自定义聚合函数UDAF 教程(Java踩坑教学版)
    Spark源码分析之Spark-submit和Spark-class
  • 原文地址:https://www.cnblogs.com/huntdream/p/3025291.html
Copyright © 2011-2022 走看看