Unity3d在手机里面实现用手势放大缩小镜头

刚进入一家公司,上了4天班了,终于发现自己是那么的菜,看了老大写的一些代码。没办法看下去了,简直太强了,在这几天上班里,因为是很大的公司,感觉自己压力很大很大啊。心里很压抑。因为自己很菜。好了,先不说这些了,加油吧。坚持努力学习。这几天里老大叫我实现在手机里面实现镜头的放大缩小和移动场景,有点像海岛奇兵那样的控制镜头那样的效果,在写这些代码中。遇到了很多很多的问题。因为紧张,也因为自己基础不行。

代码如下,需要把这个脚本绑定在摄像机上:

using UnityEngine;
using System.Collections;

public class CameraController : MonoBehaviour
{

public float ZoomSpeed = 500;
    public float zoomSpeed
    {
        get
        {
            return ZoomSpeed;
        }
        set
        {
            ZoomSpeed = value;
        }
    }
    public float MaxY = 3921;
    public float maxY
    {
        get
        {
            return MaxY;
        }
        set
        {
            MaxY = value;
        }
    }

public float MinY = 1200;
    public float minY
    {
        get
        {
            return MinY;
        }
        set
        {
            MinY = value;
        }
    }
    // Update is called once per frame
    private Vector2 lastTouchPos1 = Vector2.zero;
    private Vector2 lastTouchPos2 = Vector2.zero;

void Update()
    {
      //这里是鼠标控制
        if (Input.GetAxis("Mouse ScrollWheel") != 0)
        {
            var forward = Camera.main.transform.forward * ZoomSpeed * Input.GetAxis("Mouse ScrollWheel");
            Camera.main.transform.position += forward;
        }

//这里是在手机上手势控制
        if (Input.touchCount > 1)
        {

if (Input.GetTouch(0).phase == TouchPhase.Moved || Input.GetTouch(1).phase == TouchPhase.Moved)
            {
                Vector2 v1 = Input.GetTouch(0).position;
                Vector2 v2 = Input.GetTouch(1).position;

float distance = GetDistance(v1, v2);
                Vector3 forward = Camera.main.transform.forward * distance * Time.deltaTime * 0.5f;
                Vector3 newPos = Camera.main.transform.position + forward;
                if (newPos.y > MaxY || newPos.y < MinY)
                {

}
                else
                {
                    Camera.main.transform.position = newPos;
                }
                lastTouchPos1 = Input.GetTouch(0).position;
                lastTouchPos2 = Input.GetTouch(1).position;

}
            else
            {
                lastTouchPos1 = Vector2.zero;
                lastTouchPos2 = Vector2.zero;
            }

}

}

private float GetDistance(Vector2 pos1, Vector2 pos2)
    {
        if (lastTouchPos1 == Vector2.zero && lastTouchPos2 == Vector2.zero)
        {
            return 0.0f;
        }

return (pos2 - pos1).sqrMagnitude - (lastTouchPos2 - lastTouchPos1).sqrMagnitude;
    }

}

这里只是实现镜头的放大缩小,下次补上移动场景的。先加班了,大家加油吧

时间: 2024-10-14 03:43:01

Unity3d在手机里面实现用手势放大缩小镜头的相关文章

用简单的方法,在android上实现手势放大缩小功能

package com.example.eventtest; import java.util.ArrayList; import android.os.Bundle; import android.app.Activity; import android.gesture.GestureOverlayView; import android.gesture.GestureOverlayView.OnGestureListener; import android.graphics.Point; i

Android多点触摸交互处理,放大缩小图片

多点触摸(MultiTouch),指的是允许计算机用户同时通过多个手指来控制图形界面的一种技术.与多点触摸技术相对应的就是单点触摸,单点触摸的设备已经有很多年了,小尺寸的有触摸式的手机,大尺寸的最常见的就是银行里的ATM机和排队查询机等等. 多点触摸技术在实际开发过程中,用的最多的就是放大缩小功能.比如有一些图片浏览器,就可以用多个手指在屏幕上操作,对图片进行放大或者缩小.再比如一些浏览器,也可以通过多点触摸放大或者缩小字体.其实放大缩小也只是多点触摸的实际应用样例之一,有了多点触摸技术,在一定

手势(4)判断放大缩小

#import "MJcostom.h" @implementation MJcostom - (id)initWithFrame:(CGRect)frame{    self = [super initWithFrame:frame];    if (self) {        self.backgroundColor=[UIColor yellowColor];        NSLog(@"现在开始");                _moveView=

Unity3D中使用Leap Motion进行手势控制

Leap Motion作为一款手势识别设备,相比于Kniect,优点在于精确度. 在我的毕业设计<场景漫游器>的开发中,Leap Motion的手势控制作为重要的一个环节.以此,谈谈开发中使用Leap Motion进行手势识别的实现方式以及需要注意的地方. 一.对Leap Motion的能力进行评估 在设定手势之前,我们必须知道Leap Motion能做到哪种程度,以免在设定方案之后发现很难实现.这个评估依靠实际对设备的使用体验,主要从三个方面: 1.Leap Motion提供的可视化的手势识

Unity3D Android手机开发环境配置

Unity3D Android手机开发环境配置 Date:2014-01-01 07:09 1.配置eclipse环境:首先在官网下载安装包:http://developer.android.com/sdk/index.html,点击这个按钮开始下载 进入下一页,选择对应你系统的版本,继续下载. 32和64位版本千万不能选错了,如果不清楚就查看一下你的系统版本. 下载完成后就是类似这样的包adt-bundle-windows-x86_64-20131030.zip,解压出来像这样 为了方便我们把

PhotoView实现图片随手势的放大缩小的效果

项目需求:在listView的条目中如果有图片,点击条目,实现图片的放大,并且图片可以根据手势来控制图片放大缩小的比例.类似于微信朋友圈中查看好友发布的照片所实现的效果. 思路是这样的:当点击条目的时候触发listview的点击事件,跳转到另一个页面,在页面中自定义一个ImageView来实现图片的随手势的放大.但是点击图片来实现图片消失这一点这块小弟不会做,并且图片随手势的放大效果并不好.所幸的是最中找到了photoview这一个控件.使用photoView控件需要使用jar包:发现博客园不能

(转)Unity3D Android手机开发环境配置,可真机发布调试

此方法配置好,在可以在unity直接发布到手机上,并可以实时调试. 1.配置eclipse环境:首先在官网下载安装包:http://developer.android.com/sdk/index.html,点击这个按钮开始下载  进入下一页,选择对应你系统的版本,继续下载.    32和64位版本千万不能选错了,如果不清楚就查看一下你的系统版本.  下载完成后就是类似这样的包adt-bundle-windows-x86_64-20131030.zip,解压出来像这样  为了方便我们把它们让入ad

[转载]支付宝钱包手势密码破解实战(root过的手机可直接绕过手势密码)

/* 本文章由 莫灰灰 编写,转载请注明出处. 作者:莫灰灰    邮箱: [email protected] */ 背景 随着移动互联网的普及以及手机屏幕越做越大等特点,在移动设备上购物.消费已是人们不可或缺的一个生活习惯了.随着这股浪潮的兴起,安全.便捷的移动支付需求也越来越大.因此,各大互联网公司纷纷推出了其移动支付平台.其中,用的比较多的要数腾讯的微信和阿里的支付宝钱包了.就我而言,平时和同事一起出去AA吃饭,下班回家打车等日常生活都已经离不开这两个支付平台了. 正所谓树大招风,移动支付

Unity3D Android手机开发环境配置,可真机发布调试

此方法配置好,在可以在unity直接发布到手机上,并可以实时调试. 1.配置eclipse环境:首先在官网下载安装包:http://developer.android.com/sdk/index.html,点击这个按钮开始下载  进入下一页,选择对应你系统的版本,继续下载.    32和64位版本千万不能选错了,如果不清楚就查看一下你的系统版本.  下载完成后就是类似这样的包adt-bundle-windows-x86_64-20131030.zip,解压出来像这样  为了方便我们把它们让入ad