前往小程序,Get更优阅读体验!
立即前往
社区首页 >专栏 >u3d拖动摄像机视角与双指缩放

u3d拖动摄像机视角与双指缩放

作者头像
立羽
发布于 2023-08-24 05:41:11
发布于 2023-08-24 05:41:11
35000
代码可运行
举报
文章被收录于专栏:Unity3d程序开发Unity3d程序开发
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
复制
using UnityEngine;
using System.Collections;

public class CamMove : MonoBehaviour
{
    private float m_xSpeed = 250.0f;
    private float m_ySpeed = 120.0f;

    private float m_yMinLimit = -45;
    private float m_yMaxLimit = 45;

    private float m_xAngles = 0.0f;
    private float m_yAngles = 0.0f;

    Vector2 m_oldPos0;
    Vector2 m_oldPos1;

    public float m_scale = 1.0f;
    float m_scaleStep = 0.1f;
    float m_scaleMax = 2.0f;

    public bool m_enable = true;
    void Start()
    {
        Vector3 angles = transform.eulerAngles;
        m_xAngles = angles.y;
        m_yAngles = angles.x;
    }

    void Update()
    {
        if (Application.platform == RuntimePlatform.WindowsEditor)
        {
            if (m_enable)
            {
                if (Input.GetMouseButton(0))
                {
                    m_xAngles -= Input.GetAxis("Mouse X") * m_xSpeed * 0.02f;
                    m_yAngles += Input.GetAxis("Mouse Y") * m_ySpeed * 0.02f;
                }
                else
                {
                    if (Input.GetAxis("Mouse ScrollWheel") < 0)
                    {
                        FullRenderScale(false, 0.1f);
                    }
                    //Zoom in  
                    if (Input.GetAxis("Mouse ScrollWheel") > 0)
                    {
                        FullRenderScale(true, 0.1f);
                    }
                }
            }
        }
        else
        {
            if (m_enable)
            {
                if (Input.touchCount == 1)
                {
                    if (Input.GetTouch(0).phase == TouchPhase.Moved)
                    {
                        m_xAngles -= Input.GetAxis("Mouse X") * m_xSpeed * 0.02f;
                        m_yAngles += Input.GetAxis("Mouse Y") * m_ySpeed * 0.02f;

                    }
                }

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

                        var curPos0 = Input.GetTouch(0).position;
                        var curPos1 = Input.GetTouch(1).position;

                        if (IsEnlarge(m_oldPos0, m_oldPos1, curPos0, curPos1))
                        {
                            FullRenderScale(true, 0.01f);
                        }
                        else
                        {

                            FullRenderScale(false, 0.01f);
                        }
                        m_oldPos0 = curPos0;
                        m_oldPos1 = curPos1;
                    }
                }
            }
        }
    }

    bool  IsEnlarge(Vector2 old0,Vector2 old1,Vector2 cur0,Vector2 cur1) 
    {
        var leng1 = Mathf.Sqrt((old0.x - old1.x) * (old0.x - old1.x) + (old0.y - old1.y) * (old0.y - old1.y));
        var leng2 = Mathf.Sqrt((cur0.x - cur1.x) * (cur0.x - cur1.x) + (cur0.y - cur1.y) * (cur0.y - cur1.y));
        if(leng1<leng2)
        {
             return true;
        }
        else
        {
            return false;
        }
    }

    void LateUpdate()
    {
        if (m_enable)
        {
            m_yAngles = ClampAngle(m_yAngles, m_yMinLimit, m_yMaxLimit);
            Quaternion rotation = Quaternion.Euler(m_yAngles, m_xAngles, 0);
            transform.rotation = rotation;
        }
    }

    static float ClampAngle(float angle, float min, float max)
    {
        if (angle < -360)
            angle += 360;
        if (angle > 360)
            angle -= 360;
        return Mathf.Clamp(angle, min, max);
    }

    void FullRenderScale(bool isBig,float scale)
    {
        if (isBig)
        {
            if (m_scale <= m_scaleMax)
            {
                m_scale += scale;
            }
        }
        else
        {
            if (m_scale > 1.0f)
            {
                m_scale -= scale;
            }
        }
        MainMgr.Instance.m_fullRender.transform.localScale = new Vector3(m_scale, m_scale, m_scale);
    }

    private void OnEnable()
    {
        m_enable = true;
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-05-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
2011年09月01日 Go生态洞察:Go语言词法扫描与App Engine演示
喵,猫头虎博主今天要分享的是在悉尼Google技术用户组(GTUG)的两次精彩Go语言演讲。🔎 Rob Pike带来了关于Go语言新模板包中词法解析器组件的设计,而Andrew Gerrand则展示了使用App Engine API构建的简易实时聊天应用。本篇博客将带你领略这两场演讲的亮点,并探讨它们在Go开发中的应用。
猫头虎
2024/04/09
1030
2011年09月01日 Go生态洞察:Go语言词法扫描与App Engine演示
2018年2月16日 Go生态洞察:Go 1.10版本发布分析
🐯 猫头虎博主 在此,为您带来最新的Go生态洞察!今天,我们将深入探讨2018年2月16日发布的Go 1.10版本。对于Go语言爱好者和开发者来说,这是一个激动人心的时刻!一起来看看新版本的亮点和改进吧。🔍
猫头虎
2024/04/09
1070
2018年2月16日 Go生态洞察:Go 1.10版本发布分析
2013年12月12日 Go生态洞察:深入Go Playground的内部实现
🌟 你好,我是猫头虎博主!今天我们将探索Go语言的一个非常炫酷的部分——Go Playground。这是一个编译并执行任意Go代码的网络服务,让我们深入其背后的技术实现,解析它如何与各种服务整合,以及它如何安全地执行任意用户代码。准备好了吗?让我们一起揭开Go Playground的神秘面纱吧!
猫头虎
2024/04/08
1250
2013年12月12日 Go生态洞察:深入Go Playground的内部实现
2014年2月24日 Go生态洞察:FOSDEM 2014上的Go演讲精选
🌟 大家好,我是猫头虎博主!今天,我们要探讨的是2014年2月2日在FOSDEM举办的Go Devroom系列精彩演讲。这一天对Go社区来说意义重大,共有13场精彩的演讲在一个爆满的房间里进行。让我们一起来回顾这些激动人心的演讲,看看Go在这个重要的开发者大会上有哪些亮点展示!
猫头虎
2024/04/08
970
2014年2月24日 Go生态洞察:FOSDEM 2014上的Go演讲精选
2023年6月21日 Go生态洞察:Go 1.21版发行候选版的深入分析
🔍 大家好,我是猫头虎博主!今天我们要聊的是Go语言的最新动态:Go 1.21版的发行候选版。如果你是Go语言的爱好者,这里有你不容错过的最新信息和深入分析。让我们一起探索Go 1.21版的新特性和改进吧!
猫头虎
2024/04/08
1280
2023年6月21日 Go生态洞察:Go 1.21版发行候选版的深入分析
2022年9月6日 Go生态洞察:Go的漏洞管理新支持
猫头虎博主来报道!今天,我们要聊聊Go在漏洞管理方面的新动向。Go团队最近推出了对漏洞管理的新支持,这是帮助Go开发者了解可能影响他们的已知漏洞的第一步。让我们深入了解这个项目的现状和未来规划。如果你是Go语言爱好者,那这篇文章绝对不容错过!
猫头虎
2024/04/09
1110
2022年9月6日 Go生态洞察:Go的漏洞管理新支持
2015年1月7日 Go生态洞察:全球首个Go语言黑客马拉松——Gopher Gala
大家好,我是猫头虎,热衷于分享Go语言的最新动态。今天我们将一起探讨一个激动人心的事件——全球首个Go语言黑客马拉松——Gopher Gala。这个活动不仅是Go社区的一次盛会,更是展示Go语言创新潜力的一个绝佳平台。让我们一起来了解一下吧!
猫头虎
2024/04/09
1220
2015年1月7日 Go生态洞察:全球首个Go语言黑客马拉松——Gopher Gala
2019年3月14日 Go生态洞察:Go开发者网络新动态
🐆 猫头虎博主在此,带你深入了解2019年3月14日的大事件——Go开发者网络(GDN)的诞生!搜索词条:GoBridge、Go社区、开发者网络、用户组、Go模块。
猫头虎
2024/04/08
870
2019年3月14日 Go生态洞察:Go开发者网络新动态
2019年2月25日 Go生态洞察:Go 1.12 版本发布
大家好,我是猫头虎博主!🐯 今天,我要和大家分享一则激动人心的消息:Go 1.12 版本正式发布了!作为一名热衷于技术的探索者,我将深入挖掘这一版本的新特性和改进。如果你是一个Go语言爱好者,那么这篇文章你绝对不能错过。让我们一起探索Go 1.12的世界吧!🚀
猫头虎
2024/04/08
1250
2019年2月25日 Go生态洞察:Go 1.12 版本发布
2021年1月12日 Go生态洞察:探索Go中泛型的提议
嗨,猫头虎博主在此!今天,我们要讨论的是Go语言中一个令人兴奋的提议——引入泛型。自2009年Go首次发布以来,泛型一直是社区最期待的特性之一。这篇博客将深入探讨这个提议的细节和对Go生态的影响。准备好了吗?让我们开始吧!
猫头虎
2024/04/09
1080
2021年1月12日 Go生态洞察:探索Go中泛型的提议
2012年08月22日 Go生态洞察:App Engine 1.7.1的Go语言更新
🐾 大家好,猫头虎博主来啦!今天我们要聊聊Go语言在Google App Engine 1.7.1版本中的最新动态。对于热衷于最新技术动态的你来说,这些更新可能是改善你的Go应用程序的关键。本文将深入分析这些更新,并提供实用的示例和技巧。如果你在寻找“Go App Engine 1.7.1更新”或“Go语言云端部署”的信息,那么你来对地方了!
猫头虎
2024/04/09
990
2012年08月22日 Go生态洞察:App Engine 1.7.1的Go语言更新
2020年6月15日 Go生态洞察:pkg.go.dev开源探索
🐯 猫头虎博主来啦!今天我们要聊聊Go语言的一个超级重症——pkg.go.dev的开源之旅!如果你是Go开发者,或者对开源生态感兴趣,那就千万不要错过啦!🚀 我们会一起挖掘其中的技术细节,探索这个平台如何影响了Go生态。让我们一起潜入Go的世界,探寻更多精彩!🔍
猫头虎
2024/04/09
1090
2020年6月15日 Go生态洞察:pkg.go.dev开源探索
2023年12月5日 Go生态洞察:Go开发者调查结果分析
大家好,我是猫头虎博主,今天我们要聊的是Go语言生态的最新动态。最近,Google的Go团队公布了2023年下半年的Go开发者调查结果,其中涵盖了AI/ML工具在Go语言中的应用、工具链错误信息的改进,以及开发者对Go语言的总体满意度等多个热点话题。🔍🚀
猫头虎
2024/04/09
1610
2023年12月5日 Go生态洞察:Go开发者调查结果分析
刚刚,谷歌宣布取消I/O全球开发者大会!2020因疫情取消的科技会议大盘点
新型冠状病毒在全球蔓延呈现扩大趋势,继谷歌一名员工在瑞士苏黎世办事处确诊新冠病毒后,亚马逊亦于近日公布两名员工在意大利米兰检测出新冠病毒阳性。谷歌亚马逊等科技公司纷纷限制员工出差旅行,一些大学和科研机构也取消了聚集性会议,以降低健康风险。
新智元
2020/03/05
1.1K1
刚刚,谷歌宣布取消I/O全球开发者大会!2020因疫情取消的科技会议大盘点
2022年9月26日 Go生态洞察:Go运行时4年后的进展
🐱 猫头虎博主来啦!今天带来的是Go语言的最新动态。如果你是一个Go语言爱好者,那这篇文章一定不容错过!一起来看看自2018年以来Go运行时和Go垃圾收集器(GC)有哪些新的变化吧!🚀
猫头虎
2024/04/09
1160
2022年9月26日 Go生态洞察:Go运行时4年后的进展
2023年9月8日 Go生态洞察:gopls的扩展与Go生态系统的成长
🐯 猫头虎博主来啦!今天咱们聊聊Go语言的世界里的新动态——gopls的最新进展。如果你是Go语言的爱好者或专业开发者,这篇文章会给你提供宝贵的洞察。搜索关键词:Go语言,gopls,性能优化,内存使用。
猫头虎
2024/04/08
2060
2023年9月8日 Go生态洞察:gopls的扩展与Go生态系统的成长
2020年6月16日 Go生态洞察:泛型的下一步
🐯 猫头虎博主来啦!今天我们要深入Go的最新进展:泛型的发展历程。作为Go语言热门话题的核心,泛型的探讨总是让人兴奋不已。我们会从最新的设计草案到实验工具,一步步解析泛型在Go中的演变。如果你对Go语言和泛型兴趣浓厚,那就跟随我的脚步,一起探索吧!🚀
猫头虎
2024/04/09
1140
2020年6月16日 Go生态洞察:泛型的下一步
2017年9月5日 Go生态洞察:社区外联工作组的启动与行动
📝 摘要 嗨,我是猫头虎博主,专注于深入挖掘技术趋势和社区动态。今天,我们将探索Go语言领域的一个重大事件:2017年9月5日宣布的Go社区外联工作组(CWG)。我们将深入了解其使命、行动计划以及如何参与其中。如果你是Go爱好者,这绝对是你不能错过的信息!
猫头虎
2024/04/09
1400
2017年9月5日 Go生态洞察:社区外联工作组的启动与行动
2013年12月13日 Go生态洞察:Go在App Engine上的工具、测试和并发
🚀 大家好,这里是猫头虎博主!今天,我们将一起探索Go在App Engine上的最新发展,包括新工具、本地单元测试和并发支持的增强。这些改进旨在提高开发者在使用Go进行App Engine开发时的效率和便利性。让我们深入了解这些激动人心的更新吧!
猫头虎
2024/04/08
1090
2013年12月13日 Go生态洞察:Go在App Engine上的工具、测试和并发
推荐阅读
相关推荐
2011年09月01日 Go生态洞察:Go语言词法扫描与App Engine演示
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验