Unity-点击屏幕进行移动

2023-10-27

Unity中实现点击屏幕进行移动

1,首先获取点击事件   是在void Update里每帧都要监测


Input.GetMouseButton(0) 是输入鼠标抬起事件  0鼠标左键  1鼠标右键  2鼠标中键

Input.touchCount==1  移动平台  如手指触摸屏幕  1个手指1  2个手指2  3个手指3

2,点击事件在什么位置

      1>首先在Hierarchty面板创建一个空物体起名Road(路)  在它的底下在建一个空物体改名叫Ground(地面),再在它的下面建一个平面Plane给名叫Ground,将Mesh Renderer勾掉 它是渲染的意思  但是另一个Mesh Collider 适用于碰撞检测的


  2>做发先从摄像机发出射线和地面碰撞,碰到的点就是移动的点

Ray ray =Camera.main.ScreenpointToRay(Input.mouseposition) 

射线          主摄像机          摄像机到屏幕一个点        鼠标位置


上面这张图是射线转换图     摄像机到屏幕一个点   ScreenPointToRay

                                          屏幕转换为视窗          ScreenToViewportPoint

                                          屏幕转换为世界          ScreenToWorldPoint

                                          视窗转换为屏幕          ViewToScreenPoint


3>定义一个光线碰撞投射信息   RayCastHit  hitInfo

4>有了射线就要进行碰撞  if(Physics.RayCast(ray,out hitInfo))  碰到一个动画返回一个true

                                             射线投射   起点  方向  长度 

角色位置到鼠标位置和朝向


以下两张图是一个完整的简单的点击屏幕进行移动的写法



第二种写法


解释:先定义目标点位置  public Vector3 m_Targetpos   定义目标速度   public  float  m_Speed

         if(hitInfo.collider.gameObject.Equals("Ground",System StringComParison.CurrentCultureIgnoreCase))如果碰到地面返回一个点,在这里需要定义一个点

        m_Targetpos=hitInfo.point;  目标位置等于射线点的位置

       if(Vector3.Distance(m_Targetpos,transform.position))  Distance两点之间的距离

     Vector3.forward是一个定值,它没有任何意义!它仅仅代表Vector3(0,0,1)

      Space.Self应用变换相对于局部坐标系统,也叫本地坐标,自身坐标。

      transform.Translate默认沿着物体移动的方法


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

Unity-点击屏幕进行移动 的相关文章

  • Latex 问题汇总(持续更新)

    Latex 问题汇总 持续更新 写在前面 Latex安装链接 问题及解决办法 持续更新 1 如何手动安装宏包 2 如何改变WinEdt默认的pdf预览程序 写在前面 写这篇文章 是为了记录使用Latex期间遇到的一些问题和解决办法 还有一些

随机推荐

  • 【JAVA】定时任务之借阅到期自动催还

    该篇主要以定时任务为主 通知略为记录 一 定时任务逻辑代码 定时任务文件 TaskScheduling java package org springblade modules task import lombok extern slf4j
  • 什么是循环?Java中有哪些循环?

    在编程中 循环是一种重复执行一段代码块的结构 循环允许我们根据特定的条件多次执行相同的代码 从而提高代码的复用性和效率 在Java中 常见的循环结构有以下几种 1 for循环 for循环是一种在已知循环次数的情况下使用的循环结构 它由三个部
  • 在进行后台传值的时候注意----去空的处理

    经常在实际的开发过程中 需要避免将空值传递给后台 比如在实际开发过程中遇到的问题 eg 在进行查询功能的处理的时候 需要将获取到的各种查询条件传入后台 vue实际项目 所以这时候 会对页面上获取到的值进行去空的处理 对传入后台的值进行去空的
  • 硬盘分类详解

    一 按原理分类 机械硬盘 HDD 固态硬盘 SSD 以及混合硬盘 SSHD 1 机械硬盘 HDD 机械硬盘 HDD 是传统硬盘 为电脑主要的存储媒介之一 由一个或者多个铝制或者玻璃制成的磁性碟片 磁头 转轴 控制电机 磁头控制器 数据转换器
  • java 生成 静态页面_利用Java生成静态HMTL页面

    有时候需要生成静态的HTML页面以减小数据库与服务器的压力和负担 于是在网络上一阵狂搜 找到几篇相当不错的文章和一些相当有用的资料 为了方便 我整理在自己的BLOG 以供参考 在接下来的应用中 我自己想到另一种解决方案 就是通过Ajax S
  • 基于模糊RBF神经网络轨迹跟踪研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 模糊控制 Fuzzy Control 是
  • 什么时候使用useCallback和useMemo?

    目录 1 什么是useCallback和useMemo 2 为什么使用useCallback和useMemo 3 什么时候使用useCallback和useMemo 3 1 useCallback 3 2 useMemo 1 什么是useC
  • Kettle — 安装和部署

    前提 Kettle是纯Java编写的ETL开源工具 目前Kettle7和Kettle8都需要Java8或者以上才能正常运行 所以开运行Kettle前先检查Java环境是否正确配置 Java版本是否是8或者以上 Kettle安装 1 创建Ke
  • 操作系统--文件管理

    文件管理 目标 提高外存储空间利用率 什么是外存什么是内存 区别是什么 计算机的存储器也跟人们在演算过程中 运用大脑和纸 笔记本记忆的原理一样 我们把计算机内相当于大脑作用的存储器叫做 内存储器 也叫 内存 而相当于纸和笔记本作用的叫做 外
  • tensorflow: Could not load dynamic library ‘cudart64_101.dll‘ 解决办法

    问题描述 安装 tensorfolw gpu2 1 0 之后调用 显示 GPU False 不能调用GPU 在命令行中 import tensorflow 时显示 Could not load dynamic library cudart6
  • linux支持哪些因特网协议,Linux下因特网密钥交换协议设计与实现.doc

    Linux下因特网密钥交换协议设计与实现 Linux下因特网密钥交换协议设计与实现 摘要 介绍IPSec协议和因特网密钥交换协议 IKE 然后结合具体的科研工作 详细阐述在Linux操作系统上实现IKE协议的一种具体实现方案 解决如何在In
  • 递归算法最后返回值问题

    public String set byte val throws Exception Cluster cluster getRandomMaster writableCluster SSDB ssdb cluster getMaster
  • java8+jre配置_JAVA8 JDK/JRE环境配置教程

    下载JAVA JDK 1 从JAVA官网 下载 注意选择自己需要的版本 2 百度云盘 链接 https pan baidu com s 1deOFGN1xB0mgz6s2mTRXdA 提取码 ke97 安装JAVA JDK 打开下载的安装包
  • 【完全开源】小安派-SCP-2.4 无线中控器

    目录 一 概述 二 系统框图 三 2 4寸触摸液晶显示屏 四 外置音频模块 五 电源管理模块及五个按键 六 资料 一 概述 小安派 SCP 2 4用安信可Ai M61 32S模组作为控制核心 采用Type C接口进行供电 通过SPI接口连接
  • pip install github报错

    fatal unable to access https github com xxx OpenSSL SSL connect SSL ERROR SYSCALL in connection to github com 443 duplic
  • Qt Creator (C++) ui界面修改后运行不产生作用 解决办法

    xxx ui是xml文件 要生成ui xxx h才能编译 但qt修改了ui文件之后 有时候不会自动重新生成并覆盖原有的ui xxx h 即使清除然后重新构建项目也不会 uic o ui widget h widget ui 在ui文件所在的
  • [libtorrent] linux 搭建 libtorrent 开发编译环境

    操作系统 ubuntu 20 04 参考文档 http libtorrent org building html 搭建 libtorrent 步骤 一 下载源码 1 从官网下载 libtorrent 源码 git clone recurse
  • IDEA去除pom.xml中依赖的黄色警报

    英文原版 settings Editor Inspections Security 取消Vulnerable declared dependency 中文插件 设置 编辑器 检查 Security 取消Vulnerable declared
  • XMind中关于甘特图的一些操作技巧 

    转自 https www sohu com a 114518101 198687 2016 09 18 09 27 甘特图 Gantt chart 又称为横道图 条状图 Bar chart 中的甘特图是一个可以用来协助用户进行项目管理的工具
  • Unity-点击屏幕进行移动

    Unity中实现点击屏幕进行移动 1 首先获取点击事件 是在void Update里每帧都要监测 Input GetMouseButton 0 是输入鼠标抬起事件 0鼠标左键 1鼠标右键 2鼠标中键 Input touchCount 1 移