unity如何固定unity虚拟摇杆杆位置?

版权声明:本文为博主原创文章未经博主允许不得转载。 /qq/article/details/

unity虚拟摇杆杆主要是开发移动端的游戏用的市面上这样的游戏有很多,大家也都见过或者玩过了今天我就给夶家说一个巨简单的方法做这个unity虚拟摇杆杆,不需要用三角函数不需要用什么sin,cos的直接用Unity自带的UGUI就可以了。

现在场景中新建一个panel创建之后unity自动生成一个Canvas画布,然后把panel重命名为joystickwin这个对象就是摇杆的背景了,也是摇杆的活动范围背景大家可以随便弄个圆圈的图片或者什么都不弄也可以的。我是弄了一个蓝色半透明的圆圈

然后把joystickwin对象的中点(也就是图中圆圈四个箭头的那个东西)对齐到左Canvas的左下角,怎么对齐就不用说了吧如果这都不会的话,那么你还是回去复习一下UGUI的教程吧^_^

在joystickswin对象下创建一个d-pad对象也就是蓝色的摇杆了,父子关系洳图所示d-pad的父对象是joystickswin。

转到p-pad的组件面板改好图片,添加Event Trigger组件然后添加两个event事件,事件列表如下图所示:

这里我们只需要两个事件就恏了一个是鼠标拖拽(Drag),一个是鼠标松开(PointUp)事件的用法是这样的:比如说drag事件吧,拖拽的时候会调用指定对象的指定方法

说到方法,我们肯定要写一段脚本才能调用了

//虚拟方向按钮初始位置 //虚拟方向按钮可移动的半径 //如果鼠标到虚拟键盘原点的位置 < 半径r //计算出鼠标和原点之间的向量 //这里dir.normalized是向量归一化的意思,实在不理解你可以理解成这就是一个方向就是原点到鼠标的方向,乘以半径你可以理解成在原点到鼠标的方向上加上半径的距离 //松开鼠标unity虚拟摇杆杆回到原点

代码中有一个对象大家可能不是很理解就是那个border对象,图里也能看到这个对象这个对象的设置看下图:


border的中点是跟joystickswin的右边中点对齐的,由于UGUI的自适应性这个中点始终都会在joysticks的右边

之所以要这个中點,是为了计算这个中点到原点的距离也就是得出半径r的数值。

现在脚本已经写完了回到d-pad对象的组件面板,找到event trigger面板下面还空着两個事件呢,把d-pad对象拖到这两个事件上调用的方法也就是代码中的OnDragIng()和OnDragEnd()方法了,看字面意思也知道怎么选了吧

可能方法列表里没有这俩方法,那是你忘记了把这俩方法设为public了回去脚本改一下就好了。

大功告成了!运行一下试试!发布到安卓或者IOS试试!是不是贼拉风啊哈囧哈!

参考资料

 

随机推荐