unity實現(xiàn)方向盤轉(zhuǎn)動效果_第1頁
unity實現(xiàn)方向盤轉(zhuǎn)動效果_第2頁
unity實現(xiàn)方向盤轉(zhuǎn)動效果_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第unity實現(xiàn)方向盤轉(zhuǎn)動效果本文實例為大家分享了unity實現(xiàn)方向盤轉(zhuǎn)動效果的具體代碼,供大家參考,具體內(nèi)容如下

手指或鼠標(biāo)拖動方向盤旋轉(zhuǎn),有角度限制,松手后自動回轉(zhuǎn)。

將代碼添加到方向盤Image上。

注意需要賦值Canvas。

usingUnityEngine;

usingUnityEngine.EventSystems;

publicclassSteeringWheel:MonoBehaviour,IDragHandler,IEndDragHandler

publicCanvasCanvasRoot;//需要指定畫布

privateRectTransformm_RectTransform;//坐標(biāo)

privateboolm_IsFirst=true;//用于記錄第一幀按下鼠標(biāo)時鼠標(biāo)的位置,便于計算

privateVector3m_CurrentPos;//記錄當(dāng)前幀鼠標(biāo)所在位置

privateboolm_IsClockwise;//是否順時針

privatefloatm_RoundValue=0;//記錄總的旋轉(zhuǎn)角度用這個數(shù)值來控制一圈半

privateboolm_IsTuringSteeringWheel;//是否在轉(zhuǎn)方向盤用這個判斷復(fù)位

publicvoidOnDrag(PointerEventDataeventData)

m_IsTuringSteeringWheel=true;

Vector2pos;

if(RectTransformUtility.ScreenPointToLocalPointInRectangle(m_RectTransform,Input.mousePosition,CanvasRoot.worldCamera,outpos))//獲取鼠標(biāo)點(diǎn)擊位置

pos.x=pos.x+(Screen.width/2)-GetComponentRectTransform().position.x;

pos.y=pos.y+(Screen.height/2)-GetComponentRectTransform().position.y;

Vector3pos3=newVector3(pos.x,pos.y,0);//計算后鼠標(biāo)以方向盤圓心為坐標(biāo)原點(diǎn)的坐標(biāo)位置

if(m_IsFirst)

m_CurrentPos=pos3;

m_IsFirst=false;

Vector3currentPos=Vector3.Cross(pos3,m_CurrentPos);//計算當(dāng)前幀和上一幀手指位置用于判斷旋轉(zhuǎn)方向

if(currentPos.z0)

m_IsClockwise=true;

elseif(currentPos.z0)

m_IsClockwise=false;

if(m_CurrentPos!=pos3)//范圍內(nèi)讓方向盤隨著手指轉(zhuǎn)動

if(m_IsClockwise)

if(m_RoundValue=180)

m_RoundValue+=Vector3.Angle(m_CurrentPos,pos3);

transform.Rotate(newVector3(0,0,-Vector3.Angle(m_CurrentPos,pos3)));

else

if(m_RoundValue=-180)

m_RoundValue-=Vector3.Angle(m_CurrentPos,pos3);

transform.Rotate(newVector3(0,0,Vector3.Angle(m_CurrentPos,pos3)));

m_CurrentPos=pos3;

publicvoidOnEndDrag(PointerEventDataeventData)

m_IsFirst=true;

m_IsTuringSteeringWheel=false;

voidStart()

CanvasRoot=GameOb

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論