Unity-点击屏幕进行移动
2018-02-01 16:43
579 查看
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默认沿着物体移动的方法
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默认沿着物体移动的方法
相关文章推荐
- [置顶] unity中点击屏幕2d图片的移动和旋转
- Unity 通过点击屏幕控制人物移动
- Unity 3d 如何实现点击屏幕,npc自动移动到点击位置
- Unity 通过点击屏幕控制人物移动。
- Unity 鼠标点击左右移动,人物跟随旋转
- Unity18--鼠标和场景相反运动、物体绕过障碍物,向目标自动移动,且鼠标点击哪里,物体也运动
- Unity中玩家通过点击行走 或 滑动屏幕行走的实现
- iOS中点击移动,使得手机屏幕的颜色随机变化
- 通过手机屏幕的宽和高实现点击并移动的效果------Android
- 《跑跑跑》(四)——添加屏幕点击事件,让主角上下移动
- UNITY手指接触屏幕对物体进行旋转和缩放
- Unity 物体在屏幕内跟随鼠标移动
- Unity3D【脚本】点击物体后屏幕放大 - (射线、坐标的转换、摄像机的移动和改变属性)
- NGUI 点击屏幕时在该点创建图片并跟随鼠标移动
- 分享一个Unity3D点击模型跟随鼠标移动的小脚本(包括屏幕视图到三维空间的坐标转换)
- 【Ubuntu】Ubuntu16.04移动Unity位置和点击图片最小化
- 【Unity 3D学习】鼠标点击控制人物移动到目标位置
- Unity中UGUI中获取鼠标点击位置以及UI物体的屏幕坐标
- Unity中物体如何移动到鼠标点击位置
- Unity控制鼠标移动及点击