【unity3d学习笔记】实现点击小地图让角色移动至对应位置
来源:互联网 发布:mac队基地 编辑:程序博客网 时间:2024/05/16 18:58
步骤
- 步骤
- 实现小地图
- 转换坐标
- 发出射线
- 实现效果
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 }); }
将改代码放于小地图上即可。
4.实现效果
阅读全文
1 0
- 【unity3d学习笔记】实现点击小地图让角色移动至对应位置
- 【Unity学习笔记】——实现点击小地图上某位置,让player走到那里
- unity3D 实现NGUI物体朝鼠标点击位置移动
- [脚本] Unity3d 实现鼠标左键点击地形使角色移动到指定地点
- unity3d实现鼠标左键点击地形使角色移动到指定地点
- Unity3d 实现鼠标左键点击地形使角色移动到指定地点[脚本]
- unity3d 小地图实现思路
- Unity3D之实现点击地形使物体移动到指定位置
- Unity3D学习笔记04:角色控制器CharacterController控制人物移动旋转
- 天地图中实现让指定位置移动到地图中心
- Unity3D - 控制角色移动
- Unity3D学习笔记07:射线Ray实现点击拾取
- Unity3D小白学习日记(01):如何把物体移动到鼠标点击处
- Unity3D学习笔记1-角色控制
- unity 通过点击游戏小地图,来移动主相机功能实现
- Unity3D让物体从规定时间内移动到某一位置
- Unity3D让物体从规定时间内移动到某一位置
- unity3d 小地图的实现 脚本代码
- 新手上路--C语言学习
- position float的用法
- 毕业两年
- CoordinatorLayout源码解析之从NestedScrolling说起
- Android Studio中新建资产目录assets
- 【unity3d学习笔记】实现点击小地图让角色移动至对应位置
- 实现fullnat模式的环境构造——编译内核
- JAVA入门之简易扑克牌游戏
- 资深Java程序员的学习路线建议
- HTTP协议详解
- 【Git之窗】(七).gitignore
- mybatis 面试题
- AtCoder 079F Namori Grundy
- SqlSessionFactory和Sqlsession