unity角色触摸转向

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);
    }
}
Unity中判断鼠标或者手指是否点击在UI上(UGUI) 在Unity场景中,有时UI和游戏角色都需要响应触摸事件,如果同时响应可能就会出现点击UI的时候影响到了游戏角色。所以我们需要对所点击到的东西做判断,这里使用UGUI系统自带的方法和射线检测的方式,判断是否点击到UI上: 第一种方法,直接在Update中判断: void Update() { //判断是否点击UI if (Input.G... 阅读详情

相关推荐

Unity引擎开发:输入与交互系统_Unity中的触摸输入处理

通过本节的学习,我们了解了如何在Unity中处理触摸输入,包括单点触摸、滑动操作、多点触控、手势识别、触摸长按以及触摸拖动物体和视角。这些基础的触摸输入处理技巧可以为移动平台上的游戏开发提供强大的支持。你可以根据具体的游戏需求,进一步扩展和优化这些代码,实现更加丰富和复杂的交互效果。希望这些示例和解释对你有所帮助,如果你有任何疑问或需要进一步的帮助,请随时提问。

chenlz2007的博客 1865

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

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

A_Pro_Cat的博客 2534

Unity引擎开发:角色控制器开发_角色控制器在不同平台的适配

除了Unity内置的Profiler工具,还可以在代码中添加自定义的性能监控,以便更详细地了解角色控制器的性能表现。// 自定义性能监控示例// 自定义性能监控示例 using UnityEngine;// 移动输入 float horizontal = Input . GetAxis("Horizontal");// 跳跃输入 if(isGrounded && Input . GetButtonDown("Jump")) {

chenlz2007的博客 1034

Unity 鼠标旋转物体360展示

PC端 using UnityEngine; using System.Collections; public class DragRound : MonoBehaviour { public Transform obj; public float speed = 2; private bool _mouseDown = f...

anbd0604的博客 915

Unity引擎开发:角色控制器开发_角色移动基础

自定义输入可以通过创建自定义的输入管理器来实现,使角色的移动更加灵活和可配置。本节详细介绍了在Unity中实现角色移动的方法,包括基本的Transform组件移动、Rigidbody组件的物理模拟移动,以及常见的平移、旋转、跳跃和冲刺移动方式。此外,还探讨了如何通过物理引擎实现更真实的角色移动效果,如重力模拟、摩擦力模拟和碰撞检测。最后,介绍了如何优化角色移动的性能和稳定性,以及一些高级角色移动技巧,如平滑移动、自定义输入和动画融合。

chenlz2007的博客 902

Unity引擎开发:输入与交互系统_手势识别与触摸输入

除了常见的手势,还可以根据游戏需求实现自定义手势。自定义手势的识别通常需要更复杂的算法来分析触摸轨迹。以下是一个简单的自定义手势识别示例,实现一个“画圈”手势。在Unity中实现手势识别和触摸输入可以显著提升玩家的沉浸感和操作体验。通过检测触摸点的移动、跟踪触摸轨迹、分析手势特征,可以实现滑动手势、缩放手势、旋转手势和自定义手势。优化手势识别的准确性和响应速度也是提升游戏体验的重要环节。希望本节的内容能帮助你在游戏中实现高效、准确的手势识别功能。

chenlz2007的博客 1108

Unity开发——触屏功能之物体随手指拖动而转动

这里是原文,很棒: Unity 物体根据手指拖动而转动(可用于物体的360度展示)(手机端)_阳尘子的博客-优快云博客

青岚岁叶的博客 2338

Unity5中触摸控制插件的导入与使用指南

除了提供基本的触摸控制功能之外,”Easy Touch”还允许开发者创建高度自定义的虚拟操纵杆和触摸按钮。这意味着游戏设计师可以根据游戏的风格和玩法需求,定制几乎任何类型的控制方案。通过调整操纵杆的大小、形状和颜色,或者修改按钮的布局和响应区域,游戏的用户体验可以得到大幅度提升。自定义程度的提高不仅仅止于视觉上的调整,插件还允许开发者对操纵杆和按钮的动态行为进行深入的编程控制。例如,操纵杆可以设置为不同的摩擦力、回弹速度和敏感度,而按钮则可以设置为按下和释放时的动画效果以及声音反馈。

weixin_35751194的博客 873

在Unity中通过触摸屏幕实现模型的旋转和缩放

在项目中,我们有时要通过触摸屏幕来实现模型的放大缩小以及旋转。这个在AR的制作中是非常常见的,所以下面我们来实现这样的功能。 using UnityEngine; using System.Collections; public class ScaleAndRotate : MonoBehaviour {     private Touch oldTouch1;  //上次触摸点1

caojianhua1993的博客 1万+

unity 手机 触屏 控制玩家 移动 方向

unity 手机 触屏 控制玩家 移动 方向

本地化部署dify,使用Database插件实现dify直连数据库报错No module named ‘MySQLdb‘解决方案

网上查阅各种资料,有说修改/dify-main/docker/volumes/sandbox/dependencies目录下的python-requirements.txt文件,添加了如下两行,试验后无效。,看到有人是其他报错,但是URI配置如下(在mysql后面加了pymysql),尝试后果真成功了。按照系统提示设置完数据库URI后保存出现错误。在工具市场查询Database,点击后进行授权。最后在该插件的项目地址获得灵感。

qiaoxu1989的博客 4333

【Unity InputSystem】实用教程-实现角色移动跳跃功能(Input System在PC端鼠键!手机端触摸屏!主机手柄!三端使用教程)

在了解了如何使用5种不同的方式获取到InputSystem种的输入检查信息后我们继续分享一下如何使用检测到的信息实现我们对应的输入功能。

Jay的游戏开发历程 1万+

AI Agent评估:指标、策略与最佳实践

AI智能体正逐渐融入到各个领域,从日常的对话助手到复杂的工作流程自动化,其应用范围不断拓展。然而,确保这些智能体能够可靠、高效地完成任务至关重要,这就使得AI智能体评估成为了人工智能发展过程中不可或缺的一环。本文将深入探讨AI智能体评估的指标、策略以及最佳实践,为读者全面解读这一关键领域。

llm_way的博客 3498

【Unity InputSystem】实用指南:在PC端(鼠标与键盘)、手机端(触摸屏)、主机手柄上同步实现角色移动与跳跃功能

随着Unity的不断发展,开发者对于项目的输入系统要求也日益提高。在进行多平台适配和跨平台移植时,常常需要改变输入系统,这给开发者带来了不少困扰。而Unity官方推出的InputSystem插件,则是为了解决这一问题而推出的全新输入方式。相较于旧版的InputManager,InputSystem的操作虽然更为繁琐复杂,但在应对跨平台项目时,面对不同的输入方式,InputSystem的输入映射机制为开发者提供了巨大的便利。因此,学习InputSystem成为必要之举。

YF云飞的博客 1万+

matlab电偶极子源码,电偶极子的MATLAB场模拟

电偶极子周围电场电势分布的MATLAB三维模拟Matlab可以用于模拟四维场的效果,本文以电偶极子的电场和电势场为例展示MATLAB在该方面领域的应用。摘要电偶极子由一个正电荷和一个负电荷组成,其电场和空间电势分布与单电荷相比具有一些重要的特性。本文将给出电场和电势场的近似表达式。这两个量的精确表达式是复杂的,不太常用,因此 MATLAB 被采用来操作精确值和绘制三维分布的远区域, 近区域和一侧区...

weixin_35135480的博客 3150

node运行项目-Network: unavailable-没有ip地址

vscode运行vue项目后发现Network: unavailable 是什么情况呢?可能有一下三种情况:1.多个网卡原因:打开网络共享中心,把多余的网络禁用掉,只留一个2.在中配置host及public3.系统环境变量问题。

JackieDYH的博客 7538

Unity 输入实战:角色移动的输入适配(多设备兼容)

本文探讨了Unity中实现角色移动输入适配及多设备兼容性的关键技术。首先介绍了输入适配的核心概念,包括其在游戏开发中的重要性以及典型应用场景。随后详细解析了技术原理,重点阐述了Unity的组件化设计、生命周期函数和输入处理机制。文章提供了实践代码示例,展示如何通过Input.GetAxis处理多设备输入,实现角色移动控制。此外还介绍了环境搭建步骤和基础实现方法,包括游戏对象控制和UI交互示例。这些技术要点对于提升游戏开发效率、保障性能以及解决跨设备兼容性问题具有重要价值。

输出倒逼输入,写作驱动成长。 8909

数字信号处理----数字上变频和下变频都FPGA实现

** 数字信号处理基础----信号下变频和解调 一、 任务介绍 数字上变频器(DUC)和数字下变频器(DDC)广泛应用于通信系统,用于信号采样速率的转换。当信号从基带转换至中频( IF )带,需要使用数字上变频器。而数字下变频器是用于将信号从中频( IF )带转换为基带。DUC和DDC通常包括使用混频器进行频率转换,此外还有采样率转换。DUC或DDC的结构主要取决于所需要的转换率。例如,WiMAX (全球互通微波接入)系统典型的转换率为8—10阶。对于如此低的转换率,DUC和DDC只需采用FIR滤波器架构。

Born_toward的博客 3万+

unity中手机触摸代码

#elif UNITY_IOS || UNITY_ANDROID         if(Input.touchCount         {             return;//强制退出  不执行以下有关触摸的代码         }         if (Input.GetTouch(0).phase == TouchPhase.Began)         {    

螞蟻的日常 971

SentEval学习笔记

SentEval allows you to evaluate your sentence embeddings as features for the followingdownstreamtasks: Task Type #train #test needs_train set_classifier MR movie review(影评) 11k 11k 1 1 CR product review(产品评述) ...

AlphaFinance 803

硬件工程师笔记——三极管Multisim电路仿真实验汇总

NPN型三极管:由N型半导体、P型半导体和N型半导体组成,即NPN结构。 PNP型三极管:由P型半导体、N型半导体和P型半导体组成,即PNP结构。 三极管的工作原理基于电流的控制和放大,其核心是基区对电流的控制作用。 将三极管等效为两个串联的二极管进行等效分析

XU157303764的博客 2635

【Unity 第三人称角色控制器插件】Invector Third Person Controller - Basic Locomotion Template 快速实现移动、跳跃、下蹲、转向等基础功能

Invector Third Person Controller - Basic Locomotion Template 是一款为Unity开发者设计的第三人称角色控制器插件,提供了基础的角色动作控制功能,适用于需要快速开发第三人称视角游戏的项目。这个插件是Invector系列中的一个基础模板,专注于提供简单且可定制的角色移动和基本动作,开发者可以在此基础上进行扩展,添加更多复杂的功能,快速实现第三人称角色的移动、跑步、跳跃、转向等基础操作

2403_88403568的博客 907

Halcon那些事:Halcon缺陷检测检测印刷数字完整性

创建模板 create_shape_model模板匹配 find_shape_model。

十多年IT经验,专注机器视觉,智能制造半导体行业 764

Orleans 集群配置指南:使用 Consul 实现集群成员管理与网关发现

本文是 Orleans 集群配置系列中的 Consul 篇,讲解如何通过 [`Microsoft.Orleans.Clustering.Consul`](https://link.gitcode.com/i/231eb44fc339a305783f5bc23a529310) 包,将 Consul 的键值存储作为集群成员表(membership table),让 Silo 与客户端在同一集群内完成节

gitblog_00583的博客 381

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【Unity 物理角色控制插件】Physics Character Controller 使用物理模拟来处理角色的运动和交互,这种方式使角色的运动更加自然和真实

Physics Character Controller 是一款为Unity开发者设计的插件,旨在提供一种基于物理引擎的角色控制系统。与传统的基于直接控制的角色移动方式不同,Physics Character Controller 使用物理模拟来处理角色的运动和交互。这种方式使角色的运动更加自然和真实,尤其适用于需要精确物理反馈的游戏,如平台跳跃、冒险、物理模拟类游戏等。

2403_88403568的博客 1366

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: unity触摸屏控制角色移动、配置移动速度、方向、速度保持、防误触、摄像机跟随
下一篇: unity 增加系统时间显示、FPS帧率、ms延迟
BigData-0
博客等级 码龄7年 341粉丝 309原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BigData-0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值