刚开始在将鼠标点转换为世界坐标时,我以为可以直接使用Unity的Camera.main.ScreenToWorldPoint( Input.mousePosition ) 就完事了,事实证明我想的太简单了。在我们使用这个API将鼠标屏幕点(Screen)转换成世界坐标(World)的时候,因为鼠标点z值的原因,直接使用的话得到的永远是一个固定值(Camera.main 的世界坐标),所以我们需要将鼠标点进行一个修正。

鼠标点直接转换为世界坐标

摄像机坐标

处理的方法:

1.我们将需要跟随鼠标移动物体的世界坐标转换为屏幕坐标(WorldScreen)。

//将目标物体的世界坐标转换成屏幕坐标
Vector3 targetScreenPos = Camera.main.WorldToScreenPoint(target.transform.position);

2.然后将转换后的 z值传给鼠标坐标,修正鼠标坐标

//修正后的鼠标坐标
Vector3 mousePos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, targetScreenPos.z);

3.现在就可以把修正后的mousePos转换为世界坐标了

//将修正后的鼠标位置  转换为世界坐标
Vector3 mouseSToW = Camera.main.ScreenToWorldPoint(mousePos);

完整代码:

    //鼠标按下时 鼠标点的位置Vector3 mouseStartMovePos;//鼠标按下时 target的位置Vector3 targetStartMovePos;private void FollowMove(){//将 target世界坐标转换成屏幕坐标Vector3 targetScreenPos = Camera.main.WorldToScreenPoint(target.transform.position);//修正鼠标点的坐标Vector3 mousePos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, targetScreenPos.z);//将 修正后的鼠标点 转换成世界坐标Vector3 mouseSToW = Camera.main.ScreenToWorldPoint(mousePos);//鼠标按下时记录 鼠标点的位置 和 target的位置if (Input.GetMouseButtonDown(0)){mouseStartMovePos = mouseSToW ;targetStartMovePos = target.transform.position;}//跟随移动,加上偏移if (Input.GetMouseButton(0)){target.transform.position = targetStartMovePos + mouseSToW - mouseStartMovePos;}}

Unity物体跟随鼠标移动相关推荐

  1. Unity协程实现场景中鼠标按住的物体跟随鼠标移动

    Unity协程实现场景中的鼠标按住物体跟随鼠标移动 void Awake() { StartCoroutine(OnMouseDown() as IEnumerator); } IEnumerator ...

  2. unity2d 实现物体跟随鼠标绕一个点旋转效果

    在2D游戏中,类似泡泡龙炮台发射.敌人飞机永远指向PLAYER.愤怒小鸟弹弓发射等效果,都需要用到物体跟随鼠标绕一个点旋转的效果,在unity中实现代码很简单,但是在理解上有一定障碍,因为unity是 ...

  3. threejs中坐标系转换和实现物体跟随鼠标移动

    坐标系转换 下面函数可以将鼠标所在点的屏幕坐标转化成一个Threejs三维坐标: convertTo3DCoordinate(clientX,clientY){var mv = new THREE.V ...

  4. CocosCreator2.4 物体跟随鼠标或触摸点

    CocosCreator2.4 物体跟随鼠标或触摸点 前言 效果 注意事项 源码 前言 项目需求鼠标点击要有效果,移动要跟随,但是看了文档发现坐标系转换会有问题,于是记录下. 效果 注意事项 使用cc ...

  5. Unity让物体跟随鼠标移动

    前言 最近在学习Unity,记录下学习的成果吧.本文最终结果是要实现一个小飞机跟随鼠标移动的效果.看下图片. 向量 在Unity中,每个对象都有自己的位置属性,组件叫做Transform,通过Tran ...

  6. 【Unity】OnTriggerStay2D无法触发问题,物体跟随鼠标等背包系统以及UI场景交互系统技术总结

    背包系统以及交互 交互实现 技术总结 OnTriggerStay2D无法碰撞 检测跟随鼠标移动 跟着麦扣老师学习的背包系统之后,因为参加GameJam后现在码了背包和场景交互,但是都有些bug,最近重 ...

  7. 物体跟随鼠标移动——图片为gif格式

    注意:大的gif图片需要隐藏滚动条. <!DOCTYPE html> <html><head><meta charset="utf-8"& ...

  8. Unity——指针跟随鼠标旋转,GTA武器菜单选择等效果实现

    GTA武器菜单选择 简单实现这种效果 Demo的效果 以下是主要代码 using System.Collections; using System.Collections.Generic; using ...

  9. Unity3d 物体跟随鼠标移动

    效果:当点击鼠标左键时,游戏对象会朝鼠标点击的方向移动,类似魔兽争霸一样. 思路:把鼠标的坐标转化成世界坐标(鼠标默认是屏幕坐标),然后当点击鼠标时,物体将朝着鼠标的世界坐标方向移动. 如果你看到这的 ...

  10. Unity 用鼠标拖动3D物体 跟随鼠标移动

    public class MouseMove : MonoBehaviour {//鼠标经过时改变物体颜色private Color mouseOverColor = Color.blue;//声明变 ...

最新文章

  1. 批量下载文件,循环中文件流没有关闭导致每次下载会累加之前的下载文件
  2. 湖南工业大学java试卷_湖南工业大学数控加工技术试卷.doc
  3. Mysql视图权限设置的踩坑经历
  4. C/C++在Android开发中的应用
  5. java文字转语音支持ubuntu系统_微信内测语音进度条,60秒语音终于有救了?腾讯:并没有...
  6. 如何用python画转盘_如何用ppt做一个抽奖转盘 看完你学会了么
  7. 计算机组成原理课程要求及目的,计算机组成原理-教学大纲
  8. 淘宝图片服务器的学习
  9. c#元胞自动机_元胞自动机+生命游戏
  10. python算法精解pdf_算法详解(卷1)算法基础 PDF 完整高清版
  11. android xml pid vid,关于Android机型的pid vid的那些破事儿
  12. windows11,Windows10,服务器centos7安装docker,docker compose
  13. icp许可证怎么申请
  14. unhandled system error, NCCL version 2.7.8
  15. pmp中ram和raci的区别_信息系统项目管理师和PMP考试考哪个?
  16. 使用 OpenCV 和 Python 识别信用卡号
  17. 华为emui11系统是鸿蒙系统吗,华为EMUI10.1才更新不久,EMUI11就被曝,网友:咋没见鸿蒙?...
  18. Arduino Uno 实验4——电位器
  19. jquerymobile创建9宫格事例
  20. Unity使用艺术字体

热门文章

  1. vc++ 2008 Redistributable Setup Error 1935.An error occurred during the ...
  2. Android基础入门教程——4.3.2 BroadcastReceiver庖丁解牛
  3. CrystalReports2008 SN
  4. java 元胞自动机_元胞自动机 Java实现
  5. 编辑器漏洞、越权、逻辑漏洞(不安全的对象引用、功能级别访问控制缺失)
  6. Tomcat常见内存溢出的解决方案
  7. latex表格手把手超详细教程(table, tabular, multirow, multicolumn)
  8. LaTeX tabular表格环境与命令
  9. matlab 使用uci数据集,如何使用UCI数据集
  10. freemarker 数组转字符串_freemarker list转json