`

unity3d 触屏多点触控(旋转与缩放)

阅读更多
/*
Touch Orbit
Programmed by: Randal J. Phillips (Caliber Mengsk)
Original Creation Date: 12/16/2011
Last Updated:                   12/16/2011
Desctiption: Simple orbit by one touch and drag, as well as pinch to zoom with two fingers.
*/


var x:float;

var y:float;

var xSpeed:float;

var ySpeed:float;

var pinchSpeed:float;

var distance:float = 10;

var minimumDistance:float = 5;

var maximumDistance:float = 100;

private var touch:Touch;

private var lastDist:float = 0;

private var curDist:float = 0;

private var gameCamera:Camera;

function Start () 

{

        gameCamera = Camera.mainCamera;

}

 
function Update () 

{

        if (Input.GetKeyDown(KeyCode.Escape))

        {

                Application.Quit();

        }

        
        if (Input.touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Moved) 

        {

                //One finger touch does orbit

                touch = Input.GetTouch(0);

                x += touch.deltaPosition.x * xSpeed * 0.02;

                y -= touch.deltaPosition.y * ySpeed * 0.02;

        }

        if (Input.touchCount > 1 && (Input.GetTouch(0).phase == TouchPhase.Moved || Input.GetTouch(1).phase == TouchPhase.Moved)) 

        {

                //Two finger touch does pinch to zoom

                var touch1 = Input.GetTouch(0);

                var touch2 = Input.GetTouch(1);

                curDist = Vector2.Distance(touch1.position, touch2.position);

                if(curDist > lastDist)

                {

                        distance += Vector2.Distance(touch1.deltaPosition, touch2.deltaPosition)*pinchSpeed/10;

                }else{

                        distance -= Vector2.Distance(touch1.deltaPosition, touch2.deltaPosition)*pinchSpeed/10;

                }

 

                lastDist = curDist;

        }

        
        if(distance <= minimumDistance)

        {

                //minimum camera distance

                distance = minimumDistance;

        }

        

        if(distance >= maximumDistance)

        {

                //maximum camera distance

                distance = maximumDistance;

        }
        
        

        //Sets rotation

        var rotation = Quaternion.Euler(y, x, 0);

        

        //Sets zoom

        var position = rotation * Vector3(0.0, 0.0, -distance) + Vector3(0,0,0);

        

        //Applies rotation and position

        transform.rotation = rotation;

        transform.position = position;

}

 

function OnGUI()

{

        //Simple output to display the distance from the center

        GUI.Label(Rect(0,0,Screen.width, Screen.height),distance.ToString());

}
分享到:
评论

相关推荐

    TouchScript-9_unity_broadqa9_多点触控插件_TouchScript_源码.rar

    《TouchScript:Unity中的多点触控解决方案》 在当今的数字时代,触屏设备已经无处不在,从智能手机到平板电脑,再到大型互动展示,触控已经成为用户与数字世界交互的主要方式。Unity,作为一款广泛应用的游戏开发...

    unity+tuio协议的多点触控,实现了tuio协议和unity3D的无缝结合

    Tuio(Tabletop Ubiquitous Object)协议就是一种用于支持多点触控和手势识别的技术,它允许应用程序接收来自各种输入设备(如触摸屏、投影表面等)的实时位置和速度数据。 Tuio协议与Unity3D的结合,使得开发者...

    unity+tuio实现触屏demo

    "unity+tuio实现触屏demo"这个项目是将Unity引擎与Tuio协议相结合,以实现多点触控功能的演示。在Unity中集成Tuio协议,开发者可以创建支持手指或触控笔等多点触控设备的应用程序,这在移动设备和具有触摸界面的设备...

    TUIO结合Unity使用的案例

    TUIO(Touch User Interface Object)则是一种用于多点触控和手势识别的开放协议,它允许设备如触摸屏、Kinect等与应用程序进行通信。将TUIO与Unity结合,可以创建出更加直观、互动性强的用户体验。 在"TuioTest"这...

    Unity 手游开发,多指触控操作演示示例

    总的来说,Unity3D提供了全面的触摸事件支持,使得开发者可以充分利用移动设备的多点触控特性,创造各种创新的游戏控制方案。通过对Input类和Touch类的深入理解和实践,我们可以构建出更加自然、直观的用户界面,...

    Unity3d进行手机游戏开发的EasyTouch插件

    3. **多点触控支持**:EasyTouch支持同时处理多个触摸输入,这对于需要手势识别的游戏尤为重要。例如,你可以通过检测两个手指的滑动来实现旋转或缩放操作。 4. **触摸手势**:EasyTouch提供了一些预定义的手势,如...

    的Unity3D认证级游戏开发核心训练视频教程

    - **触摸屏输入**:支持移动设备上的多点触控操作。 #### 五、发布与优化技巧 **5.1 平台适配** - **支持多平台**:Windows、Mac、iOS、Android等。 - **适配屏幕尺寸**:自动调整UI布局以适应不同分辨率的屏幕。...

    Unity3d手势触摸插件 Fingers - Touch Gestures for Unity 2.5.6

    ### Unity3D手势触摸插件 Fingers - Touch Gestures for Unity 2.5.6 #### 插件简介 在当今的游戏开发领域,尤其是移动平台游戏的开发中,手势识别和触摸控制已成为不可或缺的一部分。Unity作为一款流行的游戏开发...

    easytouch5 unity

    《Unity中的EasyTouch 5:打造触摸屏虚拟控制器》 Unity引擎因其强大的跨平台能力和丰富的图形渲染能力,深受游戏开发者喜爱。在开发触屏设备的游戏时,如何有效地处理触摸输入成为一个关键问题。EasyTouch插件就是...

    Unity TUIO_TutorialDemo

    通过这个教程,开发者可以深入了解如何在Unity中集成TUIO,实现多点触控、手势识别以及与触摸屏设备的互动。 TUIO是基于OSC(Open Sound Control)协议的扩展,主要用在多点触摸和交互式表面的通信中。它允许Unity...

    Easy Touch 3.1 .zip

    此外,插件支持多点触控,可以实现更复杂的交互模式,如双指旋转、缩放等。 五、性能优化 考虑到移动设备的资源限制,Easy Touch 3.1 在设计时注重性能优化。它尽可能减少CPU和GPU的使用,确保在不影响游戏流畅度的...

    UnityEasyTouch5插件

    4. **多点触控支持**:支持同时处理多个触摸点,这意味着可以实现如旋转、缩放等复杂的手势操作。 5. **易用性**:UnityEasyTouch5提供了许多预制的UI元素和脚本示例,使得初学者也能快速上手。 6. **兼容性**:...

    UnityEasyTouch5.zip

    1. **多点触控支持**:该插件能够处理同时发生的多个触摸事件,这对于创建复杂的手势控制非常有用,比如双指缩放、旋转和滑动。 2. **虚拟控制器**:提供了一套完整的虚拟游戏手柄解决方案,包括方向键、动作按钮等...

    unity插件常用

    它提供了一系列预定义的触摸手势,如单击、双击、滑动、捏合等,让开发者能够轻松地为游戏添加多点触控功能,增强游戏的交互性。 5. **DOTween**: DOTween是一款高效的动画插件,能够简化Unity中的动画制作。它支持...

    模型控制脚本,功能简单实用

    在Unity引擎中,模型控制是游戏开发中的常见需求,它涉及到场景对象的交互与操作,使得用户能够通过输入设备如鼠标、触摸屏等对3D模型进行旋转、移动和缩放。本文将深入探讨如何使用C#脚本来实现这一功能。 首先,...

    TouchScript.zip

    它使得在Unity项目中添加多点触控支持变得简单,无需编写大量的自定义代码。开发者可以利用这些手势来实现更丰富的用户体验,例如在游戏中的导航、操作对象或者进行用户界面交互。 "readme.txt"文件通常是提供关于...

    Easy Touch 4

    "Easy Touch 4" 是一个专门针对Unity3D游戏引擎设计的交互控制工具包,它提供了先进的触摸屏操控方案,让玩家在移动设备上能够轻松地进行游戏操作。这个工具包的核心是v4.3.0版本的`.unitypackage`文件,这是一种...

    Lean Touch 用户触摸输入管理插件.rar

    1. **多点触控支持**:此插件支持多点触控功能,这意味着用户可以同时使用多个手指进行操作,如缩放、旋转或拖动,这在移动游戏和应用中尤为实用。 2. **手势识别**:通过内置的手势识别系统,开发者可以轻松添加...

    TUIOSimulator-1.2

    TUIO协议则是一种用于多点触控和运动跟踪的开放标准,它允许用户通过触摸屏、投影表面或其他输入设备与计算机进行交互。 在Unity中集成TUIOSimulator-1.2,开发者可以模拟多点触摸事件,如点击、拖动、缩放和旋转等...

    Easy Touch

    其中,"Easy Touch"是一款专为Unity3D设计的触屏检测插件,它极大地简化了在Unity中实现触摸操作的过程,让开发者能够更专注于游戏的创意和逻辑,而非底层的触摸事件处理。 Easy Touch的主要功能在于提供了一个直观...

Global site tag (gtag.js) - Google Analytics