CameraRotateAroundTarget
2015-08-30 17:02
337 查看
var target : Transform; var distance = 10.0; var xSpeed = 250.0; var ySpeed = 120.0; var yMinLimit = -20; var yMaxLimit = 80; var zoomRate = 25; var yOffset:float; private var x = 0.0; private var y = 0.0; @script AddComponentMenu("Camera-Control/Mouse Orbit") function Start () { var t:Transform = GameObject.Find("Camera Target").transform; if(t) target = t; var angles = transform.eulerAngles; x = angles.y; y = angles.x; } function Update () { if (!Input.GetMouseButton(0)){ if (target) { x += Input.GetAxis("Mouse X") * xSpeed * Time.deltaTime; y -= Input.GetAxis("Mouse Y") * ySpeed * Time.deltaTime; distance += -(Input.GetAxis("Mouse ScrollWheel") * Time.deltaTime) * zoomRate * Mathf.Abs(distance); y = ClampAngle(y, yMinLimit, yMaxLimit); var rotation = Quaternion.Euler(y, x, 0); var t:Vector3 = Vector3(target.position.x, target.position.y + yOffset, target.position.z); var position = rotation * Vector3(0.0, 0.0, -distance) + t; transform.rotation = rotation; transform.position = position; } } } static function ClampAngle (angle : float, min : float, max : float) { if (angle < -360) angle += 360; if (angle > 360) angle -= 360; return Mathf.Clamp (angle, min, max); }
相关文章推荐
- 反射相关知识点小结
- redis 入门及看法
- 修改 Semantic UI 中对 Google 字体的引用
- 分布式中使用Redis实现Session共享(二)
- Python3Hovercraft创建impressive.js演示文档(一)
- 多线程知识点小结
- 解决maven项目update project会更改jdk版本问题
- 分布式中使用Redis实现Session共享(二)
- PhoneGap插件开发---基于百度LBS的导航插件(一)
- Gallery(横向滚动显示照片,被放弃了)
- 分布式中使用Redis实现Session共享(一)
- HDU 4866 Shooting 题解:主席树
- hdoj 1285 确定比赛名次【拓扑】
- Android四大组件之Service
- struts2中action接收参数的方法
- 自制样式美观的input组件(以search输入框为例,含源码)
- 在ROS 使用摄像头 WebCam 完成图像处理(1) -- 获取图像数据
- Eclipse快捷键大全
- react.js 从零开始(二)组件的生命周期
- C字符串函数的典型实现