您好,登錄后才能下訂單哦!
小編給大家分享一下Unity3D如何實現旋鈕控制燈光效果,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
本文實例為大家分享了Unity3D實現旋鈕控制燈光效果的具體代碼,供大家參考,具體內容如下
前言
實際上使用的是非常簡單的方式,通過開啟以及關閉帶有燈光效果物體的渲染以模擬出的燈光切換效果。
正確方式應當為物體切換不同的Material實現效果。
所用函數
public void RotateAround(Vector3 point, Vector3 axis, float angle); //通過給定一個世界坐標、軸向以及一個角度,使物體以該角度旋轉繞世界坐標點的軸向的變換 public T GetComponent<T>(); //獲取對象的組件 public bool enabled { get; set; } //設置激活狀態
實現代碼
using System.Collections; using System.Collections.Generic; using UnityEngine; public class RotateControl : MonoBehaviour { public GameObject RedLight;//紅燈 public GameObject GreenLight;//綠燈 public GameObject Center;//旋轉中心,若為自身則指定自身 private bool isOn = false;//正在開啟 private bool isOff = false;//正在關閉 [Range(0,180)] public float onLine = 80;//旋鈕最大角度 [Range(0,180)] private float offLine = 0;//旋鈕最小角度 [Range(0,3)] public float speed = 1;//旋轉速度 [Range(0, 20)] public float LightingRange = 10;//亮燈角度與旋鈕最大角度的角度差 // Use this for initialization void Start () { isOn = false; isOff = false; offLine = Center.transform.rotation.z;//設定起始位置即為最小角度 RedLight.GetComponent<Renderer>().enabled = false;//關閉紅燈渲染 GreenLight.GetComponent<Renderer>().enabled = false;//關閉綠燈渲染 } // Update is called once per frame void Update () { if (Input.GetKeyDown(KeyCode.R))//關閉 { isOn = false; isOff = true; } if (Input.GetKeyDown(KeyCode.G))//開啟 { isOn = true; isOff = false; } if (isOn == true) { if (this.transform.eulerAngles.z < onLine)//旋鈕旋轉至最大角度 { this.transform.RotateAround(this.transform.position, this.transform.forward, speed); } else { isOn = false; } } if (isOff == true) { if (this.transform.eulerAngles.z > offLine + 1)//旋轉至最小角度+1°的角度,當物體旋轉到0時繼續旋轉則變為360度 { this.transform.RotateAround(this.transform.position, this.transform.forward, -speed); } else { isOff = false; } } //檢測旋轉角度控制燈光 if (this.transform.eulerAngles.z >= onLine - LightingRange)//當旋鈕旋轉角度大于閾值則渲染綠燈,關閉紅燈 { RedLight.GetComponent<Renderer>().enabled = false; GreenLight.GetComponent<Renderer>().enabled = true; } else { RedLight.GetComponent<Renderer>().enabled = true; GreenLight.GetComponent<Renderer>().enabled = false; } } }
關于物體的旋轉
由于很少情況會在物體剛好旋轉到我們所期望的角度時進行一次判定,所以物體旋轉角度一般會超過你所期望的角度。
當物體由一個正向的角度向0°方向旋轉時,物體角度低于0°時物體角度會變為360°
以上是“Unity3D如何實現旋鈕控制燈光效果”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。