unity中通过touch旋转、放大和缩小物体以及滑动方向的判断

2023-11-18

unity中通过touch旋转、放大和缩小物体以及滑动方向的判断这个需求在游戏开发中也是非常频繁,话不多说直接上代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class TouchRotateScale : MonoBehaviour {

    // 本案例主要是unity中touch事件的应用,如左右滑动旋转角色,放大缩小角色,判断左滑还是右滑

    public GameObject Player;

    Touch oldTouch1,oldTouch2;

    Vector2 beginPos;
    public Text Tips;
	void Start ()
    {
		
	}
	
	
	void Update ()
    {
        if (Input.touchCount<=0)
        {
            return;
        }

        //单点触摸
        if (Input.touchCount==1)
        {
            Touch touch = Input.GetTouch(0);
            Vector2 pos = touch.deltaPosition;
            //左右旋转:
            Player.transform.Rotate(Vector3.down * pos.x, Space.World);
            //上下旋转
            Player.transform.Rotate(Vector3.right * pos.y, Space.World);

           

        }



        //两点触摸
        Touch newTouch1 = Input.GetTouch(0);
        Touch newTouch2 = Input.GetTouch(1);

        //第二点开始进行触摸,但是只做记录,不进行处理
        if (newTouch2.phase==TouchPhase.Began)
        {
            oldTouch1 = newTouch1;
            oldTouch2 = newTouch2;
            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 / 100;

        Vector3 scale = new Vector3(Player.transform.localScale.x + scaleFactor,
            Player.transform.localScale.y + scaleFactor, 
            Player.transform.localScale.z + scaleFactor);

        //我这里设置的最小缩放到 0.3 倍 (根据个人项目调整) 
        if (scale.x > 0.3f && scale.y > 0.3f && scale.z > 0.3f)
        {
            Player.transform.localScale = scale;
        }

        //记住最新的触摸点,下次使用  
        oldTouch1 = newTouch1;
        oldTouch2 = newTouch2;

        //判断滑动方向
        TouchDirection();

    }
    //---------------判断是左滑右滑等----------------------
    void TouchDirection()
    {
        if (Input.touchCount<=0)
        {
            return;
        }

        if (Input.touchCount==1)
        {
            if (Input.GetTouch(0).phase==TouchPhase.Began)
            {
                beginPos = Input.GetTouch(0).deltaPosition;
            }
            if (Input.GetTouch(0).phase==TouchPhase.Ended && Input.GetTouch(0).phase!=TouchPhase.Canceled)
            {
                Vector2 pos = Input.GetTouch(0).deltaPosition;
                //判断滑动的方向(左右滑动还是上下滑动)

                if (Mathf.Abs(beginPos.x=pos.x)>Mathf.Abs(beginPos.y=pos.y))//左右滑动
                {
                    if (beginPos.x>pos.x)
                    {
                        Debug.Log("向左滑动");
                        Tips.text = "向左滑动";
                    }
                    else
                    {
                        Debug.Log("向右滑动");
                        Tips.text = "向右滑动";

                    }
                }
                else  //上下滑动
                {
                    if (beginPos.y > pos.y)
                    {
                        Debug.Log("向下滑动");
                        Tips.text = "向下滑动";

                    }
                    else
                    {
                        Debug.Log("向上滑动");
                        Tips.text = "向上滑动";

                    }
                }
            }
        }

    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

unity中通过touch旋转、放大和缩小物体以及滑动方向的判断 的相关文章

  • Unity 分块延迟渲染01 (TBDR)

    现代移动端图形体系结构的概述 现代SoC通常会同时集成CPU和GPU CPU被用于处理需要低内存延迟的序列 大量分支的数据集 其晶体管用于流控制和数据缓存 GPU为处理大型 未分支的数据集 如3D渲染 晶体管专用于寄存器和算术逻辑单元 而不
  • [Unity XLua]热更新XLua入门(一)-基础篇

    Aladdin XLua 前言 前段时间腾讯开源了一个内部热更框架XLua在Unity开发群里引起一阵热议 也受到广大开发者的热捧 然后我当然也抱着好奇的心去学习学习 后面也会将扩展之后的工程放在git上 大家一起学习交流 在此感谢XLua
  • [3dsMax]2018版下拉菜单项的子菜单无法选中

    软件自身问题 安装更新补丁即可解决 不想更新补丁也可以使用键盘的方向键进行选中 补丁百度云链接 https pan baidu com s 1LDxRFwQnR0GSONuz7wcEfA 提取码 6gpk
  • Unity中按钮检测鼠标状态

    改方法主要是用于按钮检测鼠标的进入 滑出 点击 抬起 长按 长按停止 1 先将下面这个脚本挂载到需要检测鼠标状态的按钮上 using System Collections using System Collections Generic u
  • Unity动画系统详解

    目录 动画编辑器 编辑器面板 动画复用 前言 人形重定向动画 Humanoid 通用动画 Generic 旧版本动画 Legacy 动画控制器 系统状态 切换条件 状态机脚本 IK动画 反向动力学 BlendTree 混合树 Animato
  • Unity3d 插件 系列——DoTweenPro介绍(图文详细+案例)

    Unity3d 插件 系列 DoTweenPro介绍 图文详细 案例 前言 一 DoTweenPro简介 二 DoTweenPro安装 三 DoTweenPro主要组件 1 DoTweenAnimation 2 DoTweenPath 3
  • Unity中UI框架的使用1-添加面板、显示Loading页面

    其中BasePanel和Canvas都是挂在面板的预制物上的 1 导入我们的UI框架 本篇文章中有用的是两个UIPanelType NUIManager和NBasePanel 会放在文章最后供大家使用 2 先将我们做好的Panel设置成预制
  • unity工程崩溃资源找回

    1 Unity死机未保存场景 当你在Unity中编辑场景 突然死机时 可以在项目文件目录中找到Temp文件夹 双击文件夹 找到 Backupscenes文件夹 把后缀为 backup的文件后缀改为 unity 然后拖进Unity的Proje
  • Unity 键盘控制人物移动——之输入方式代码的编写

    键盘输入 控制人物移动 在我们制作游戏中最常见的需求之一就是使用键盘移动游戏角色 那么我们首先需要获取键盘输入 以下提供两种方法获取键盘 这里尽量通过截图解释让大家理解代码的含义 GetInput void FixedUpdate Move
  • mac下搭建cocos2d-x3.2开发环境

    1 软件 Xcode Ant apache ant 1 9 4 bin tar gz Jdk jdk 8u45 macosx x64 dmg 有的mac系统上没有自带 Ndk android ndk r10d darwin x86 64 b
  • java中Keytool的使用总结

    java中Keytool的使用总结 2011 02 26 15 30 15 分类 在申请Android Map API Key的时候使用到了java中Keytool 下面转一篇介绍java中Keytool的文章 http blog csdn
  • Unity3d + NGUI 的多分辨率适配

    移动端的多机型适配 现在要介绍的是 锁链战记 这款游戏的适配方法 这种适配方法是UI是一个基础尺寸 背景是一个基础尺寸 背景比UI多出的部分是一些没有实际作用的部分 这样的适配方式避免了在iPhone5这样的小屏幕上镶边 首先设定UIRoo
  • unity3d切换场景Application.LoadLevel(1)含义

    Application LoadLevel 1 场景ID
  • Unity万向节死锁解决方案(2023/12/4)

    1 万向节死锁无法解决 这是因为它的特性就是如此 就像玻璃杯就是玻璃 这不可否认 别钻牛角尖昂 2 大多数情况下欧拉角足够用 例如 CF 摄像机不可能绕z轴旋转 x轴旋转也不会超过九十度 因为那样人物的腰子会被扭断 塔防游戏 保卫萝卜 吃鸡
  • unity3d 自定义的图片无法放入source image中

    须将图片的texture type改为 sprite
  • unity小球跟随音乐节奏放大缩小和改变颜色

    放在小球身上 设置对应组件即可 using System Collections using System Collections Generic using Unity VisualScripting using UnityEngine
  • 【Unity】如何让Unity程序一打开就运行命令行命令

    背景 Unity程序有时依赖于某些服务去实现一些功能 此时可能需要类似打开程序就自动运行Windows命令行命令的功能 方法 using UnityEngine using System Diagnostics using System T
  • 游戏策划:游戏开发中的关键环节

    在数字游戏的世界里 游戏策划是构建一个成功游戏的基石 游戏策划不仅仅是一个创意过程 它涉及从故事构建到技术实现的各个方面 以下是游戏策划中需要重点关注的几个重要内容 1 故事情节与世界观构建 一款游戏的魅力很大程度上取决于其故事情节和世界观
  • U3D游戏开发中摇杆的制作(UGUI版)

    在PC端模拟摇杆 实现玩家通过控制摇杆让玩家移动 以下是完整代码 using System Collections using System Collections Generic using UnityEngine using Unity
  • 游戏开发常见操作梳理之小地图的制作

    游戏中一般存在小地图系统 实际上就是设置一个新的摄像机放置在玩家的正上方 然后在小地图上显示新摄像机看见的东西就可以了 在小地图上一般存在放大地图和缩小地图的按钮可以方便放大和缩小地图 这些操作是如何实现的呢 接下来直接上核心代码 usin

随机推荐

  • 【群智能算法】一种改进的北方苍鹰优化算法 改进北方苍鹰算法INGO[1]【Matlab代码#1】

    文章目录 获取资源 请见文章第5节 资源获取 1 基础北方苍鹰优化算法 1 1 猎物识别阶段 勘探阶段 1 2 追击和逃逸阶段 开发阶段 2 改进的北方苍鹰优化算法 2 1 立方混沌Cubic映射 2 2 透镜成像反向学习 2 3 最优最差
  • 刷脸支付横空问世便利了人们的生活

    刷脸支付的横空问世 极大的便利了用户的生活 即使没有手机 出门也不会受到阻碍 甚至在刷脸支付问世后 手机反而成了多余的摆设 无需携带任何东西便能出门 宛若武林中的大侠般 挥一挥衣袖 不带走任何云彩 潇洒出门 潇洒归来 刷脸支付的便利引得无数
  • BP神经网络多输入多输出预测,BP神经网络回归预测。

    清空环境变量 warning off 关闭报警信息 close all 关闭开启的图窗 clear 清空变量 clc 清空命令行 导入数据 res xlsread 数据 xlsx 数据分析 num size 0 8 训练集占数据集比例 ou
  • Python(有限差分法和杜普伊特假设)数值解非承压畜水层和堰底和板桩下稳定渗流

    达西定律描述了计算通过多孔介质的流量的基本方程 在三个垂直坐标方向 x y 和 z 上 可以用以下方式编写 q x K
  • Linux服务器大量log日志查看命令,快速定位错误

    针对大量log日志快速定位错误地方 tail f catalina ou 动态查看日志 cat catalina ou 从头打开日志文件 可以使用 gt nanjiangtest txt 输出某个新日志去查看 root yesky logs
  • MQ手动推送消息

    1 根据topic找到你发送问题的消息 记录tag标签 key值 message消息主体 2 找到手动发送消息的位置 输入相应信息 注意需要编辑tag为当前时间 转载于 https www cnblogs com bubutianshu p
  • Java:那些把自己陷进去的误区(一)

    那些把自己陷进去的误区 1 1数据类型 1 整型 1 在Java中 整形的范围为 2147 483 648 2147483647 并且这个范围与运行Java代码的机器无关 此举大大解决了移植问题 2 Java没有任何无符合的数据类型的 un
  • 我刚刚作出了一个非常艰难的决定,还是把这个贴子发出来

    中国电力总公司 我们刚刚作出了一个非常艰难的决定 在腾讯和360停止互相争斗之前 我们决定将在装有QQ软件和360软件的电脑上停止供电 中国电力有幸能陪伴着您成长 未来日子 我们期待与您继续同行 微软中国 我们刚刚作出了一个非常艰难的决定
  • 714. 买卖股票的最佳时机含手续费

    给定一个整数数组 prices 其中第 i 个元素代表了第 i 天的股票价格 非负整数 fee 代表了交易股票的手续费用 你可以无限次地完成交易 但是你每笔交易都需要付手续费 如果你已经购买了一个股票 在卖出它之前你就不能再继续购买股票了
  • 2019年区块链教育培训课程研究报告

    前言 区块链教育培训机构可谓是区块链行业中的真正的 布道者 其课程内容主要有 技术培训 投资培训以及行业培训这三大类 课程内容主要的提供方可以分为 项目方 高校 常规教育机构以及新兴教育机构这四类 目前 较多的机构正在进行投资培训以及行业培
  • 黑圈数字符号0到50复制_带圆圈数字符号大全

    http www petroleumcloud cn pages 623 html 带圆圈数字符号一共有五种 其中包括一种中文数字符号 空心圆圈数字符号和实心黑圆圈数字分别有两种 只有一种圆圈数字符号能从0 50 其它的只有10个 复制 复
  • 华为OD机试题

    华为OD机试回顾 华为OD 机试题 Java实现 小镇做题家 做题记录 微信 yatesKumi 祖国西北部有一片大片荒地 其中零星的分布着一些湖泊 保护区 矿区 整体上常年光照良好 但是也有一些地区光照不太好 某电力公司希望在这里建设多个
  • LeetCode数据库题目汇总一(附答案)

    1 基础SQL 数据表 dept deptno primary key dname loc emp empno primary key ename job mgr references emp empno sal deptno refere
  • python numpy array 中删除含0量高于阈值的行--数据清洗

    问题 数据中包含较多0值 类似于包含较大噪声 对结果产生较大影响 目标 对数据进行清洗 在进行其他数据清洗操作的基础上 实现删除数据中包含较多0值的行 可类比推广到删除其他 代码实现 data data np sum data 0 axis
  • python中if __name__ == '__main__': 解析

    当你打开一个 py文件时 经常会在代码的最下面看到if name main 现在就来介 绍一下它的作用 模块是对象 并且所有的模块都有一个内置属性 name 一个模块的 name 的值取决于您如何应用模块 如果 import 一个模块 那么
  • java保留小数点的方式

    double型的 1 能四舍五入 System out printf 9 2f d 1 double d 114 145 2 d double Math round d 100 100 3 System out println d 2 Bi
  • PS2汉化2 - 自制程序的运行与调试

    自制程序的运行与调试 运行调试的坑点之类的 SDK 运行与调试 通过PS3 通过PS2 神 昂 奇 贵 的DTL 10000 贫穷者的零售机器 通过PCSX2仿真器 运行调试的坑点之类的 本文为了自制程序 或者修改后的某些程序 而撰写 记录
  • 第九章 tcp拥塞控制--基于Linux3.10

    下载地址 http download csdn net detail shichaog 8620701 Linux提供丰富的拥塞控制算法 这些算法包括Vegas Reno HSCTP High Speed TCP Westwood BIC
  • 【java筑基】IO流进阶之文件随机访问、序列化与反序列化

    前 言 作者简介 半旧518 长跑型选手 立志坚持写10年博客 专注于java后端 专栏简介 深入 全面 系统的介绍java的基础知识 文章简介 本文将深入全面介绍IO流知识 建议收藏备用 创作不易 敬请三连哦 大厂真题 大厂面试真题大全
  • unity中通过touch旋转、放大和缩小物体以及滑动方向的判断

    unity中通过touch旋转 放大和缩小物体以及滑动方向的判断这个需求在游戏开发中也是非常频繁 话不多说直接上代码 using System Collections using System Collections Generic usi