Unity用Slider实现滑动确认解锁

Unity用Slider实现滑动确认解锁,第1张

项目中有个需求,是需要玩家滑动解锁,增加二次确认难度防止玩家误 *** 作的一个功能,就如同iphone滑动解锁一样

我的做法 是直接采用Unity自带的Slider来实现,大概原理就是滑动handle到slider的maxvalue然后做一些列 *** 作

但是策划不想要这么生硬的拉扯,想做个松开按钮,如果滑动条值没有满自动缩回去的一个动画效果,和iphone一样

由于自带的slider 没有提供松开鼠标的一些事件用来监听,但是F12进入可以看到

既然有down 肯定有up,再f12父类

所以 自己扩展一个uislider组件,继承Slider

其中m_Value,看源码可知道 就是我们slider的value

扩展一个onvaluechangeend事件,去实现他即可

扩展下,策划虽然没有说给文字说什么动态效果,但是自己根据iphone的解锁,做了个类似呼吸灯的效果,原理也很简单,使用dotween ,对canvasgroup的扩展,动态改变alpha就行,或者改变文本颜色的透明通道也行

你可以使用第一人称视角,是Unity自带的,在Assets->Import Package->Character Control,导入这个包就好了,然后选择First Pers。。。那什么的,拖进层次视图中就行了。希望能帮到你。如果你想学习的话,你可以参考那个脚本。其次,你也可以去网上找些资料,像雨松的Unity3D游戏开发,应该比较适合你,里边有相关的代码。给点分呗~

解决思路就是将世界坐标转换成屏幕坐标,然后计算物体与鼠标之间移动量,循环鼠标被按下 *** 作,得到鼠标的当前位置,加上计算好的移动量,将新的坐标赋值给物理就行了。主要是开启一个协同程序(Corountine)来处理

主要代码如下:

//

Use

this

for

initialization

void

Start

()

{

StartCoroutine(OnMouseDown());

}

IEnumerator

OnMouseDown()

{

//将物体由世界坐标系转换为屏幕坐标系

Vector3

screenSpace

=

CameramainWorldToScreenPoint(transformposition);//三维物体坐标转屏幕坐标

//完成两个步骤

1由于鼠标的坐标系是2维,需要转换成3维的世界坐标系

//

//

2只有3维坐标情况下才能来计算鼠标位置与物理的距离,offset即是距离

//将鼠标屏幕坐标转为三维坐标,再算出物体位置与鼠标之间的距离

Vector3

offset

=

transformposition

-

CameramainScreenToWorldPoint(new

Vector3(InputmousePositionx,

InputmousePositiony,

screenSpacez));

while

(InputGetMouseButton(0))

{

//得到现在鼠标的2维坐标系位置

Vector3

curScreenSpace

=

new

Vector3(InputmousePositionx,

InputmousePositiony,

screenSpacez);

//将当前鼠标的2维位置转换成3维位置,再加上鼠标的移动量

Vector3

curPosition

=

CameramainScreenToWorldPoint(curScreenSpace)

+

offset;

//curPosition就是物体应该的移动向量赋给transform的position属性

transformposition

=

curPosition;

yield

return

new

WaitForFixedUpdate();

//这个很重要,循环执行

}

}

以上就是关于Unity用Slider实现滑动确认/解锁全部的内容,包括:Unity用Slider实现滑动确认/解锁、unity3d怎么用鼠标控制摇杆,实现物体移动、unity3d中怎么实现鼠标控制物体等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9688448.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存