Unity触摸控制旋转缩放
来源:互联网 发布:炒股是哪个软件 编辑:程序博客网 时间:2024/06/09 19:54
using UnityEngine;
using System.Collections;
using System.IO;
public class ScaleAndRotate : MonoBehaviour
{
private Touch oldTouch1; //上次触摸点1(手指1)
private Touch oldTouch2; //上次触摸点2(手指2)
public Transform Tank;
void Start()
{
}
// void Update()
// {
// if (Input.GetMouseButton (0)) {
// transform.Rotate (-Vector3.up, Space.Self);
// }
// }
void Update () {
//没有触摸
if ( Input.touchCount <= 0 ){
return;
}
//单点触摸, 水平上下旋转
if( 1 == Input.touchCount ){
GameObject ARCamera = GameObject.Find("ARCamera/Camera");
Touch touch = Input.GetTouch (0);
Vector2 deltaPos = touch.deltaPosition;
transform.Rotate (Vector3.down * deltaPos.x, Space.Self);
// transform.Rotate(-Vector3.right * deltaPos.y , Space.World);
ARCamera.transform.LookAt(Tank);
}
//多点触摸, 放大缩小
Touch newTouch1 = Input.GetTouch (0);
Touch newTouch2 = Input.GetTouch (1);
//第2点刚开始接触屏幕, 只记录,不做处理
if( newTouch2.phase == TouchPhase.Began ){
oldTouch2 = newTouch2;
oldTouch1 = newTouch1;
return;
}
//计算老的两点距离和新的两点间距离,变大要放大模型,变小要缩放模型
float oldDistance = Vector2.Distance(oldTouch1.position, oldTouch2.position);
float newDistance = Vector2.Distance(newTouch1.position, newTouch2.position);
//两个距离之差,为正表示放大手势, 为负表示缩小手势
float offset = newDistance - oldDistance;
//放大因子, 一个像素按 0.01倍来算(100可调整)
float scaleFactor = offset / 100f;
Vector3 localScale = transform.localScale;
Vector3 scale = new Vector3(localScale.x + scaleFactor,
localScale.y + scaleFactor,
localScale.z + scaleFactor);
//最小缩放到 0.3 倍
if (scale.x > 0.3f && scale.y > 0.3f && scale.z > 0.3f) {
transform.localScale = scale;
}
//记住最新的触摸点,下次使用
oldTouch1 = newTouch1;
oldTouch2 = newTouch2;
}
}
using System.Collections;
using System.IO;
public class ScaleAndRotate : MonoBehaviour
{
private Touch oldTouch1; //上次触摸点1(手指1)
private Touch oldTouch2; //上次触摸点2(手指2)
public Transform Tank;
void Start()
{
}
// void Update()
// {
// if (Input.GetMouseButton (0)) {
// transform.Rotate (-Vector3.up, Space.Self);
// }
// }
void Update () {
//没有触摸
if ( Input.touchCount <= 0 ){
return;
}
//单点触摸, 水平上下旋转
if( 1 == Input.touchCount ){
GameObject ARCamera = GameObject.Find("ARCamera/Camera");
Touch touch = Input.GetTouch (0);
Vector2 deltaPos = touch.deltaPosition;
transform.Rotate (Vector3.down * deltaPos.x, Space.Self);
// transform.Rotate(-Vector3.right * deltaPos.y , Space.World);
ARCamera.transform.LookAt(Tank);
}
//多点触摸, 放大缩小
Touch newTouch1 = Input.GetTouch (0);
Touch newTouch2 = Input.GetTouch (1);
//第2点刚开始接触屏幕, 只记录,不做处理
if( newTouch2.phase == TouchPhase.Began ){
oldTouch2 = newTouch2;
oldTouch1 = newTouch1;
return;
}
//计算老的两点距离和新的两点间距离,变大要放大模型,变小要缩放模型
float oldDistance = Vector2.Distance(oldTouch1.position, oldTouch2.position);
float newDistance = Vector2.Distance(newTouch1.position, newTouch2.position);
//两个距离之差,为正表示放大手势, 为负表示缩小手势
float offset = newDistance - oldDistance;
//放大因子, 一个像素按 0.01倍来算(100可调整)
float scaleFactor = offset / 100f;
Vector3 localScale = transform.localScale;
Vector3 scale = new Vector3(localScale.x + scaleFactor,
localScale.y + scaleFactor,
localScale.z + scaleFactor);
//最小缩放到 0.3 倍
if (scale.x > 0.3f && scale.y > 0.3f && scale.z > 0.3f) {
transform.localScale = scale;
}
//记住最新的触摸点,下次使用
oldTouch1 = newTouch1;
oldTouch2 = newTouch2;
}
}
0 0
- Unity触摸控制旋转缩放
- unity 控制摄像机旋转和缩放
- Unity 控制物体移动 旋转 缩放
- unity使用鼠标控制移动、缩放、旋转
- Unity中用触摸控制物体旋转和放大
- Unity中用触摸控制物体旋转和放大
- Unity中用触摸控制物体旋转和放大
- Unity 3D:控制相机旋转、移动、缩放等功能
- unity 手势控制物体旋转缩放(ar)
- Unity 移动端简单手势控制(移动,旋转,缩放)
- unity旋转 缩放摄像机
- 在Unity中通过触摸屏幕实现模型的旋转和缩放
- 在Unity中通过触摸屏幕实现模型的旋转和缩放
- 在Unity中通过触摸屏幕实现模型的旋转和缩放
- 002-实现Unity3d中触摸屏幕控制物体的旋转和缩放 代码实现
- unity触摸放大缩小旋转
- Unity简单镜头旋转缩放
- Unity移动旋转比例缩放
- HTTP 请求未经客户端身份验证方案“Anonymous”授权。从服务器收到的身份验证标头为“Basic realm=xxxxx”
- ps灵魂区域:图像模式
- [Java开发之路](26)Cookie机制
- 练习5-13 编写程序tail,将其输入中的最后n行打印出来。默认情况下,n的值为10,但可以通过一个可选参数改变n的值
- 数组元素的全排列
- Unity触摸控制旋转缩放
- C++之友元
- url带参数链接,以及跳转页面接受参数
- JAVA学习第二弹
- 面向对象面试题
- POJ 3243 Clever Y
- 集合面试题
- BZOJ4591——[Shoi2015]超能粒子炮·改
- java中字符串加号的实现