Unity中实现转盘抽奖效果(二)

如果要使转盘停止时转到到指定位置,应该如何做?

实现思路:

也就是在需要停止的分数的区间范围内,随机一个角度值,然后反推需要在哪个角度开始减速,如果转盘的当前角度和需要开始减速的角度有差值,需要先匀速转到那个角度,然后开始匀减速到需要停止的位置。

实现代码:

计算需要匀速旋转角度的代码

cs 复制代码
   void RandReward()
   {
       float num = Random.Range(0f, 360f);
       Debug.Log(Mathf.FloorToInt(num / 45));
       //停止的时候 angularVelocity有速度,所以最终停的位置是
       //v = v0 - at -> t = v0/a
       //_angle = 0.5f * a * t * t = 0.5f * v0 * v0 /a;
       //得到要从哪个角度开始减速
       float angle1 = num - (0.5f * angularVelocity * angularVelocity / angularAcceleration % 360);
       if (angle1 < 0)
       {
           angle1 += 360;
       }
       startSpeedSlowVel = angle1 - angle;
       if (startSpeedSlowVel < 0)
       {
           startSpeedSlowVel += 360;
       }
   }

点击转盘结束时,需要更改的代码

cs 复制代码
  if(startSpeedSlowVel > 0)
  {
      startSpeedSlowVel -= angularVelocity * Time.deltaTime;
  }
  else
  {
      angularVelocity = Mathf.Max(0, angularVelocity - angularAcceleration * Time.deltaTime);
      startSpeedSlowVel = 0;
  }

实现效果:

相关推荐
Thomas_YXQ17 小时前
Unity3D 如何做好项目性能优化详解
开发语言·性能优化·游戏引擎·unity3d·热更新
虾球xz19 小时前
游戏引擎学习第69天
学习·游戏引擎
向宇it20 小时前
【从零开始入门unity游戏开发之——unity篇04】unity6基础入门——场景窗口(Scene)和层级窗口(Hierarchy)介绍
开发语言·unity·c#·游戏引擎
不定时总结的那啥21 小时前
Unity2022接入Google广告与支付SDK、导出工程到Android Studio使用JDK17进行打包完整流程与过程中的相关错误及处理经验总结
android·unity
向宇it1 天前
【从零开始入门unity游戏开发之——unity篇05】unity6基础入门——运行游戏按钮、Game游戏窗口和Project项目窗口介绍
开发语言·游戏·unity·c#·游戏引擎
虾球xz1 天前
游戏引擎学习第72天
学习·游戏引擎
两水先木示1 天前
【Unity3D】3D渲染流水线总结
学习·unity
切韵2 天前
UI优化时保留原预制体 新预制体和新脚本的绑定引用关系的快速引用
unity·c#·编辑器
好的!文西2 天前
Unity制作3D场景的脑电运动想象范式(左右手抓握)
3d·unity·游戏引擎·脑机·实验范式
EngZegNgi2 天前
Unreal虚幻引擎使用遇到的问题记录
游戏引擎·问题记录·虚幻