【unity3d学习笔记】实现点击小地图让角色移动至对应位置
2017-07-30 20:59
405 查看
步骤
步骤实现小地图
转换坐标
发出射线
实现效果
1.实现小地图
小地图使用Render Texture是很容易实现的,演示效果如下图所示:2.转换坐标
当点击小地图时,可以获得点击位置的屏幕空间下的坐标,如果点击位置位于小地图周围的深色区域,则不予处理,当点击到小地图上时,需要将点击位置转换到小地图坐标系:在屏幕空间中左下角为(0,0),右上角为(1,1)所以坐标变换只需要进行比例变换就行,不过要考虑两个坐标原点之间的偏移,因为在做的时候用的1920*1080分辨率,所以所有的比例按照这个数值进行计算,只要将图片锚点设置好后,并且画布设置为随屏幕大小自适应后其他比例也可以使用,这里我用来存放render texture的Raw Image的宽高都为1000:
设点击位置在屏幕空间下为(s_x,s_y),转换后在小地图坐标系下为(m_x,m_y);
则转换式为:
3.发出射线
转换后的坐标与实现小地图Camera的视图空间相同,此时可以让小地图Camera产生射线与场景发生碰撞获得位置信息.主要代码:
public void OnPointerClick(PointerEventData eventData) { Vector2 tempVector = new Vector2(eventData.pointerCurrentRaycast.screenPosition.x / Screen.width, eventData.pointerCurrentRaycast.screenPosition.y / Screen.height); Vector2 raypoint=new Vector2((tempVector.x-(460/1920.0f))/(1000/1920.0f),(tempVector.y-(40/1080.0f))/(1000/1080.0f)); Ray ray = Camera.main.ViewportPointToRay(raypoint); RaycastHit hit; if (Physics.Raycast(ray, out hit, Mathf.Infinity)) { //设置玩家移动目标为点击地点 player.SetDestination(hit.point); } //LineRender指向点击位置 lineDraw.SetPositions(new Vector3[2] { Vector3.zero, hit.point }); }
将改代码放于小地图上即可。
a48b
4.实现效果
相关文章推荐
- unity3D 实现NGUI物体朝鼠标点击位置移动
- [脚本] Unity3d 实现鼠标左键点击地形使角色移动到指定地点
- [jQuery]地图浏览:如何实现图片的放大缩小和点击之后的位置居中
- Unity 3d 如何实现点击屏幕,npc自动移动到点击位置
- [jQuery]地图浏览:如何实现图片的放大缩小和点击之后的位置居中
- 原生js模拟锚点,实现点击后,内容定位到本页的对应位置
- unity 通过点击游戏小地图,来移动主相机功能实现
- Unity3d 实现鼠标左键点击地形使角色移动到指定地点[脚本]
- Unity3d 实现鼠标左键点击地形使角色移动到指定地点[脚本]
- //实现思路:鼠标点击,产生目标点,计算角色和目标点的夹角,旋转角色朝向目标点,然后移动角色。
- 【Unity学习笔记】——实现点击小地图上某位置,让player走到那里
- JavaScript--点击按钮实现选中选项移动到指定位置(下拉框)或全部选项移动
- iOS:实现MKAnnotation协议,在地图上设置大头针,点击显示具体的位置信息
- unity3d实现鼠标左键点击地形使角色移动到指定地点
- 天地图中实现让指定位置移动到地图中心
- JQUERY实现点击INPUT使光标移动到最后或指定位置
- WM_LBUTTONDOW实现地图不断往鼠标方向移动位置
- 移动控件位置和多次点击事件的源码实现
- 微信小程序实现点击按钮移动view标签的位置功能示例【附demo源码下载】
- [Unity&RPG]实现简单的鼠标点击移动 角色