您好,登錄后才能下訂單哦!
怎么在Unity 2017中使用UGUI實現大轉盤抽獎?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
public class GenerateAwar:MonoBehaviour{ public GameObject AwarGameObject; //上面制作的Awar物體 public int Count = 10; // 生成個數,當你根據數據生成個數的時候記得修改 void OnEnable () { var angle = 360 / Count; // 計算每個獎品的Z軸度數 var additionAngle = 0; //當前角度 for (var i = 0; i < Count; i++) { var obj = Instantiate(AwarGameObject); additionAngle = angle + additionAngle; obj.transform.Rotate(Vector3.forward,additionAngle); Log.Error(obj.transform.localRotation.eulerAngles.z); obj.transform.SetParent(transform,false); obj.SetActive(true); } } }
然后掛到”獎品組“身上
如:
那個獎品就是Awar,我名字改不回來了,似乎是unity的問題,哇哈哈哈
然后運行,就能看到如圖效果:
然后創建一個指針放在中心編寫一個腳本:旋轉指針的腳本
//這個腳本掛在指針身上, //然后在抽獎按鈕的Button事件里拖入指針選擇這個類的SetTime方法 public class RotatePointer : MonoBehaviour { private bool _isRotate = false;//是否旋轉 public float ContinuousTime = 2;//旋轉時間 public float Speed = 2000;//旋轉速度 public float Angle = 0; // 這個是設置停止的角度 private float _time; // Update is called once per frame void Update () { if (!_isRotate)return; //不旋轉結束 if (Time.time < _time) // 沒結束 { transform.Rotate(Vector3.forward * Speed * Time.deltaTime); } else { //結束,使用DoTween旋轉到結束角度,耗時1秒 //這里有個360,使用來防止指針回轉的,如果不加這個360,你會看到指針倒退 transform.DORotate(new Vector3(0, 0, 360 + Angle), 1f, RotateMode.FastBeyond360); _isRotate = false; // 設置不旋轉 } } //外部調用,初始化時間和打開旋轉 public void SetTime() { _time = Time.time + ContinuousTime; _isRotate = true; } //外部調用,設置停止角度 public void SetAngle(float angle) { Angle = angle; } }
指針:
開始按鈕:
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。