unity3d触摸屏手势控制镜头旋转与缩放
//用于绑定参照物对象
var target : Transform;
//缩放系数
var distance = 10.0;
//左右滑动移动速度
var xSpeed = 250.0;
var ySpeed = 120.0;
//缩放限制系数
var yMinLimit = -20;
var yMaxLimit = 80;
//摄像头的位置
var x = 0.0;
var y = 0.0;
//记录上一次手机触摸位置判断用户是在左放大还是缩小手势
private var oldPosition1 : Vector2;
private var oldPosition2 : Vector2;
//初始化游戏信息设置
function Start () {
var angles = transform.eulerAngles;
x = angles.y;
y = angles.x;
// Make the rigid body not change rotation
if (GetComponent.<Rigidbody>())
GetComponent.<Rigidbody>().freezeRotation = true;
}
function Update ()
{
//判断触摸数量为单点触摸
if(Input.touchCount == 1)
{
//触摸类型为移动触摸
if(Input.GetTouch(0).phase==TouchPhase.Moved)
{
//根据触摸点计算X与Y位置
x += Input.GetAxis("Mouse X") * xSpeed * 0.02;
y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02;
}
}
//判断触摸数量为多点触摸
if(Input.touchCount >1 )
{
//前两只手指触摸类型都为移动触摸
if(Input.GetTouch(0).phase==TouchPhase.Moved&&Input.GetTouch(1).phase==TouchPhase.Moved)
{ //Unity3d教程.html" target="_blank" class="relatedlink">Unity3d教程手册:www.manew.com
//计算出当前两点触摸点的位置
var tempPosition1 = Input.GetTouch(0).position;
var tempPosition2 = Input.GetTouch(1).position;
//函数返回真为放大,返回假为缩小
if(isEnlarge(oldPosition1,oldPosition2,tempPosition1,tempPosition2))
{
//放大系数超过3以后不允许继续放大
//这里的数据是根据我项目中的模型而调节的,大家可以自己任意修改
if(distance > 3)
{
distance -= 0.5;
}
}else{
//缩小洗漱返回18.5后不允许继续缩小
//这里的数据是根据我项目中的模型而调节的,大家可以自己任意修改
if(distance < 18.5)
{
distance += 0.5;
}
}
//备份上一次触摸点的位置,用于对比
oldPosition1=tempPosition1;
oldPosition2=tempPosition2;
}
}
}
//函数返回真为放大,返回假为缩小
function isEnlarge(oP1 : Vector2,oP2 : Vector2,nP1 : Vector2,nP2 : Vector2) : boolean
{
//函数传入上一次触摸两点的位置与本次触摸两点的位置计算出用户的手势
var leng1 =Mathf.Sqrt((oP1.x-oP2.x)*(oP1.x-oP2.x)+(oP1.y-oP2.y)*(oP1.y-oP2.y));
var leng2 =Mathf.Sqrt((nP1.x-nP2.x)*(nP1.x-nP2.x)+(nP1.y-nP2.y)*(nP1.y-nP2.y));
if(leng1<leng2)
{
//放大手势
return true;
}else{
//缩小手势
return false;
}
}
//Update方法一旦调用结束以后进入这里算出重置摄像机的位置
function LateUpdate () {
//target为我们绑定的箱子变量,缩放旋转的参照物
if (target) {
//重置摄像机的位置
y = ClampAngle(y, yMinLimit, yMaxLimit);
var rotation = Quaternion.Euler(y, x, 0);
var position = rotation * Vector3(0.0, 0.0, -distance) + target.position;
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);
}
unity3d触摸屏手势控制镜头旋转与缩放相关推荐
- Unity实现触摸屏手势控制镜头旋转与缩放
一.关于 Unity实现触摸屏手势控制镜头旋转与缩放脚本 /*** * Title:"三维可视化" 项目 * 主题:手势控制物体的旋转缩放 * Description: * 功能: ...
- Unity3D研究院之IOS触摸屏手势控制镜头旋转与缩放
前几篇文章介绍了很多Unity3D引擎自身的一些问题, 今天我们在回到IOS设备上讨论一些触摸屏幕手势,本章的目标是通过触摸iPhone屏幕手势 实现模型左右的旋转,与模型的缩放. 大家想一想模型的旋 ...
- 触摸屏手势控制镜头旋转与缩放
本帖最后由 我是一头小毛驴 于 2016-2-26 20:45 编辑 //用于绑定参照物对象 var target : Transform; //缩放系数 var d ...
- IOS触摸屏手势控制镜头旋转与缩放
using UnityEngine; using System.Collections;public class MobileCamera : MonoBehaviour {//用于绑定参照物对象pu ...
- 手势控制控件 的缩放,平移和旋转:
手势控制控件的缩放,平移和旋转: mapView是要移动的控件,TouchLayout是手势控制的区域,具体代码如下: touchLayout.setOnTouchListener(new Touch ...
- OpenGL之鼠标控制坐标系旋转、缩放、移动
OpenGL之鼠标控制坐标系旋转.缩放.移动 1.实现代码 void CMyStatic::OnMouseMove(UINT nFlags, CPoint point) { // TODO: 在此添加 ...
- [Unity3D]Unity3D游戏开发之鼠标旋转、缩放实现3D物品展示
各位朋友,大家好,我是秦元培,欢迎大家关注我的博主,我的博客地址是blog.csdn.net/qinyuanpei.最近博主重点研究了摄像机旋转.缩放等问题,那么今天为大家分享的是一个在3D展示中比较 ...
- unity鼠标控制镜头旋转_Unity3D实现鼠标控制视角转动|chu
前面,学了物体的移动功能,现在来学一下C#实现鼠标控制摄像机(视角)移动. 代码如下: C#脚本(在Unity 5.5.1 下能运行): using System.Collections; using ...
- 手势控制图片旋转(swift)
做个手势控制图片顺时针.逆时针旋转.主要思路是将图片分为左右半边,手势在左半部分时,往上是顺时针,往下是逆时针,而手势处于右半部分时正好相反,往上逆时针,往下顺时针.在手势回调里代码如下: // MA ...
最新文章
- 多任务版udp聊天器
- Mac用Java写出hello,mac中c#的helloworld
- java安装_我最喜欢的Java高级开发人员书籍
- Linux上搭建Hadoop2.6.3集群以及WIN7通过Eclipse开发MapReduce的demo
- [转]解决 cannot restore segment prot after reloc: Permission denied
- 农民代言人谋定农业大健康--万祥军:创业路上功能性农业
- c++ 删除二叉树的子树_平衡二叉树
- C# 跨平台的支付类库ICanPay
- python之异常处理_Python之异常处理
- oracle12 group by 拼接字符串
- Arduino十大滤波算法程序大全(精编无错版)
- 2008服务器系统只有回收站,清除Windows Server 2008 R2中所有用户的回收站
- FFmpeg-Python 给视频添加文字
- 《VoIP技术构架(第2版·修订版)》一 第2章 企业电话的今天
- accuracy(准确率), precision(精密度), recall(召回率), specificity(特异性), and F1-score(F1分数):分别是什么意思?
- 蓝湖(切图工具)插件的安装和使用
- java.util 语言_java中的import java.util是什么意思
- 14道初级程序员进阶中高级的必经环节
- 泰森多边形的matlab实现
- JAVA——eclipes的下载步骤
热门文章
- linux培训_南通linux培训多少钱
- 网卡清空缓存命令_怎么清除dns缓存 查看与刷新本地DNS缓存方法 (全文)
- 现有的几个Unity热更新方案该如何选择,各自的优缺点是什么?
- 【节能学院】关于芜湖某酒店电力运维系统的研究浅析
- BAT美女哪家强?阿里云深藏第一女神!
- eChart 中 柱状图、地图、AntDesign 的 滚动条表格、highChart 的 (venn) 韦恩图
- app此服务器的证书无效 伪装,解决[服务器证书无效, 连接伪装服务器]问题
- python 组合优化 回撤最小_【揭秘专业投资者的武器】经典组合优化模型 在行业资产配置中的应用示例...
- iOS进度条 自定义圆角 UIProgressView
- 【记录贴!】记录调试nerf-pytorch踩过的坑