unity角色触摸转向

1、挂载脚本到角色的父物体A上

2 、以屏幕左边的触摸为移动,右边为转向操作

3、加载角色时,将角色的父物体设置为A,须将角色的位置和角度置0

在这里插入图片描述

在这里插入图片描述

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

public class TouchMove : MonoBehaviour
{
    public float x = 189f;
    public float y = 1f;
    public float z = 562f;
    [SerializeField]
    private Transform camera;
    public float dx = 2;
    public float dy = 14;
    public float dz = -10;
    public int speed = 8;
    public int roteSpeed = 45;

    public Vector3 dretOne = Vector3.zero;
    public bool if_move = false;
    public bool if_rote = false;

    Vector2 deltaPos = Vector2.zero;

    int roteDirt =0;

    public int screenWidth = Screen.width;
    public int screenHeight = Screen.height;

    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {

        if (Input.touchCount == 1)
        {
            Touch touch = Input.GetTouch(0);
         if (touch.position.x < screenWidth / 2)
            {
                checkMove(touch);
            }else if(touch.position.x > screenWidth / 2)
            {
                checkRote(touch);
            }
 
  
        } else if (Input.touchCount > 1)
        {
            Touch touch1 = Input.GetTouch(0);
            Touch touch2 = Input.GetTouch(1);
            if (touch1.position.x < screenWidth / 2)
            {
                checkMove(touch1);
            }
            else if (touch1.position.x > screenWidth / 2)
            {
                checkRote(touch1);
            }

            if (touch2.position.x < screenWidth / 2)
            {
                checkMove(touch2);
            }
            else if (touch2.position.x > screenWidth / 2)
            {
                checkRote(touch2);
            }
        }
        if (if_move)
        {
            Move();
        }
        if (if_rote)
        {
            Rote();
        }
        //CameraLook();

    }

    void checkRote(Touch touch)
    {
        if (touch.phase == TouchPhase.Began)
        {
            Debug.Log("Touch began");
            if_rote = true;
            Debug.Log("触碰位置:" + touch.position);
        }
       else if (touch.phase == TouchPhase.Moved  )
        {

            deltaPos = touch.deltaPosition;
            if (Math.Abs(deltaPos.x) > 2  )
            {
                if(deltaPos.x<0)
                {
                    roteDirt = -1;
                }
                else
                {
                    roteDirt =  1;
                }
            }
 
            Debug.Log("Touch moved:" + deltaPos);
        }
        else if (touch.phase == TouchPhase.Ended)
        {
            Debug.Log("Touch ended");
            if_rote = false;
            roteDirt = 0;
        }
    }
    void checkMove(Touch touch)
    {
        deltaPos = touch.deltaPosition;
        if (touch.phase == TouchPhase.Began)
        {
            Debug.Log("Touch began");
            if_move = true;
            Debug.Log("触碰位置:" + touch.position);
        }
        if (touch.phase == TouchPhase.Moved )
        {

            if (Math.Abs(deltaPos.x) > 2 || Math.Abs(deltaPos.y) > 2)
            {
                dretOne = new Vector3(deltaPos.x, 0, deltaPos.y).normalized;

            }


            Debug.Log("Touch moved:" + deltaPos);
        }
        else if (touch.phase == TouchPhase.Ended)
        {
            Debug.Log("Touch ended");
            if_move = false;
            dretOne = Vector3.zero;
        }
    }

    void Rote()
    {
        transform.Rotate(Vector3.up * roteDirt*roteSpeed * Time.deltaTime, Space.Self);
        
    }
    void Move()
    {
 
        transform.localPosition += dretOne * Time.deltaTime * speed;
    }

    public void BackBtn()
    {
        transform.position = new Vector3(x, y, z);
    }

    void CameraLook()
    {
        camera.position = transform.position + new Vector3(dx, dy, dz);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/367689.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python之组合数据类型-字典dict

字典 字典的定义与特点操作字典创建字典字典的增删改查添加键值对删除键值对修改键值对访问元素 遍历字典 嵌套 字典的定义与特点 字典&#xff1a;字典是一系列键值对&#xff0c;是一种无序的数据集合&#xff0c;它是通过键来访问的&#xff0c;而不是索引 字典的特点&#…

【Go语言成长之路】安装Go

文章目录 安装Go一、下载Go语言安装包二、删除以前安装的Go版本三、添加/usr/local/go/bin到环境变量内四、确认安装成功 安装Go Note: 这里只演示安装Linux版本的Go&#xff0c;若为其它版本&#xff0c;请按照官网的安装教程进行安装即可。 一、下载Go语言安装包 ​ 在浏览…

Unity | Spine动画记录

https://blog.csdn.net/linshuhe1/article/details/79792432 https://blog.csdn.net/winds_tide/article/details/128925407 1.需要的三个文件 通常制作好的 Spine 动画导出时会有三个文件&#xff1a; .png 、.json 和 .atlas&#xff1a; skeleton-name.json 或 skeleton-…

Blender教程(基础)-面的法向-12

一、准备 新建如下图所示立方体演示面的法向 默认法向方向 二、显示法向 再菜单栏右上角、找到网络编辑模式&#xff0c;最下面的显示发法线打勾&#xff0c;如下图所示&#xff0c;出现的浅蓝色线条就是代表法向方向。 调整大小显示 三、正面 再显示叠加层菜单下找到面…

pytorch调用多个gpu训练,手动分配gpu以及指定gpu训练模型的流程以及示例

torch.device("cuda" if torch.cuda.is_available() else "cpu") 当使用上面的这个命令时&#xff0c;PyTorch 会检查系统是否有可用的 CUDA 支持的 GPU。如果有&#xff0c;它将选择默认的 GPU&#xff08;通常是第一块&#xff0c;即 “cuda:0”&#xf…

win10重装Ubuntu22.04安装报错复盘

目录 一&#xff1a;补充启动盘制作 二&#xff1a;错误信息[0xC0030570] The file or directory is corrupted and unreadable. 三&#xff1a;ubuntu重装步骤&#xff1a; 四&#xff1a;磁盘冗余阵列 五&#xff1a;尝试将SCS11(2,0.0), 第1分区(sda)设备的一个vfat文…

获取指定进程中的数据

此文章是对《打印指定进程中的数据》的扩展&#xff0c;增加了用户空间的控制接口&#xff0c;可以实现从用户空间发送指令&#xff0c;指定要获取数据的进程id和内存地址&#xff0c;然后将取到的数据返回给用户空间。 下面是驱动部分的代码 #include <linux/module.h>…

2024年混合云:趋势和预测

混合云环境对于 DevOps 团队变得越来越重要&#xff0c;主要是因为它们能够弥合公共云资源的快速部署与私有云基础设施的安全和控制之间的差距。这种环境的混合为 DevOps 团队提供了灵活性和可扩展性&#xff0c;这对于大型企业中的持续集成和持续部署 (CI/CD) 至关重要。 在混…

react+ProComponents简单实现表格

文章目录 使用ProComponents的原因 一般后台管理系统&#xff0c;大部分页面功能都是列表和表单的形式。 即便使用了组件、等&#xff0c;依旧需要写大量高度重复性的代码&#xff0c;比如列表页通常会有 筛选栏、操作栏、表格区域、和分页栏四个部分&#xff0c; 新增/编辑页…

【JavaEE Spring】Spring事务和事务传播机制

Spring事务和事务传播机制 1. 事务回顾1.1 什么是事务?1.2 为什么需要事务?1.3 事务的操作 2. Spring 中事务的实现2.1 Spring编程式事务(了解)2.2 Spring声明式事务Transactional 3. Transactional 详解3.1 rollbackFor3.2 事务隔离级别3.2.1 MySQL事务隔离级别(回顾)3.2.2 …

avast网页随机密码生成器

随机密码生成器 | 告别 12345 | Avast 可以生成随机密码 按需调整

C++ 新特性 构造函数

1.委托构造函数 委托构造函数出现的意义: 委托构造初始化能够减少代码的冗余的问题 使代码变得简洁 明朗 现在大家来看一个例子: 本代码采用了普通函数的构造方法 看起来简洁一些 但是并没有从实际上解决问题 尤其是对于 复杂数据类型的存储 比如String类型 已经发生了默认的…

cherles抓包,安卓,http/https

前置条件&#xff1a;charles抓取手机数据包的前提&#xff0c;手机和电脑需要在一个局域网内。 1、charles官网下载地址 Download a Free Trial of Charles • Charles Web Debugging Proxy 下载以后按提示安装即可。 2、charles的配置 在charles中【proxy->proxy Set…

nba2k24 灌篮高手Q版流川枫面补

nba2k24 灌篮高手Q版流川枫面补 此面补nba2k23-nba2k24通用 下载地址&#xff1a; https://www.changyouzuhao.cn/9979.html

kubernetes基本概念和操作

基本概念和操作 1.Namespace1.1概述1.2应用示例 2.Pod2.1概述2.2语法及应用示例 3.Label3.1概述3.2语法及应用示例 4.Deployment4.1概述4.2语法及应用示例 5.Service5.1概述5.2语法及应用示例5.2.1创建集群内部可访问的Service5.2.2创建集群外部可访问的Service5.2.3删除服务5.…

【Go语言成长之路】创建Go模块

文章目录 创建Go模块一、包、模块、函数的关系二、创建模块2.1 创建目录2.2 跟踪包2.3 编写模块代码 三、其它模块调用函数3.1 修改hello.go代码3.2 修改go.mod文件3.3 运行程序 四、错误处理4.1 函数添加错误处理4.2 调用者获取函数返回值4.4 执行错误处理代码 五、单元测试5.…

R语言分析任务:

有需要实验报告的可CSDN 主页个人私信 《大数据统计分析软件&#xff08;R语言&#xff09;》 实 验 报 告 指导教师&#xff1a; 专 业&#xff1a; 班 级&#xff1a; 姓 名&#xff1a; 学 …

【Pg数据库】删除数据库失败,提示有session正在连接

目录 问题现象原因分析处理方法1.断开所有连接2. 查找相关连接数据库的主机信息3. 再次删除 总结 问题现象 Navicat 删除 PostgreSQL 数据库时失败&#xff0c;提示&#xff1a;正在被其他用户访问&#xff08;有session正在连接&#xff09;如何处理&#xff1f; 如下所示&am…

【七】【C++】模版初阶

泛型编程 C中的泛型编程是一种编程范式&#xff0c;它强调代码的重用性和类型独立性。通过泛型编程&#xff0c;你可以编写与特定数据类型无关的代码&#xff0c;使得相同的代码可以用于多种数据类型。 利用重载实现泛型编程 /*利用重载实现泛型编程*/ #include<iostream&…

python中的可变与不可变、深拷贝和浅拷贝

个人猜想&#xff08;很遗憾失败了&#xff09; 在硬盘或者系统中存在一个字符集 如果存在硬盘中&#xff0c;那么硬盘出厂的时候他的字符集所占用的空间就已经确定了。 如果存在于系统的话&#xff0c;硬盘应该在出厂的时候为系统设置一个存储系统字符集的地方。在安装系统…