最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決unity rotate旋轉(zhuǎn)物體 限制物體旋轉(zhuǎn)角度的大坑

 更新時(shí)間:2021年04月12日 15:42:48   作者:aldonaletto  
這篇文章主要介紹了解決unity rotate旋轉(zhuǎn)物體 限制物體旋轉(zhuǎn)角度的大坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

今天可是遇到一個(gè)很簡單的需求,但是卻讓我疼了半天。

滑動(dòng)屏幕控制物體旋轉(zhuǎn),但是旋轉(zhuǎn)的角度要在-60到60之間。

乍一聽這簡直是小兒科啊。

判斷一下角度不就行了。相比這四元數(shù),歐拉角雖然有時(shí)會(huì)出現(xiàn)萬向鎖,但是簡潔明了啊。

這不,我就中了一個(gè)簡潔明了的大坑。

圖中,如果你以為transform.eulerAngles =(-1,0,90)

那就大錯(cuò)特錯(cuò)了。

因?yàn)閷?duì)于旋轉(zhuǎn)來說。360度是一個(gè)循環(huán)。-1° 也可以算是就是359°

而且unity就是這樣認(rèn)為的。面板上雖然顯示的是-1。但是他運(yùn)行時(shí)是359。

這就讓我的判斷出了問題。

 if(angle>60)
 
 transform.eulerAngles = new Vector3(60, transform.eulerAngles.y, transform.eulerAngles.z);
 if(angle<-60)
 
 transform.eulerAngles = new Vector3(-60, transform.eulerAngles.y, transform.eulerAngles.z);

這樣你就會(huì)發(fā)現(xiàn) 你的物體處并不受控制,有時(shí)候還會(huì)出現(xiàn)一種奇葩的狀態(tài)。

因?yàn)楫?dāng)x的值小于0后,他又變回359了。這樣又走到第一個(gè)if里面了。

那要怎么辦呢。解決方法就是:你不是負(fù)數(shù) 我把你變成負(fù)數(shù)。

 public float CheckAngle(float value)
 {
 float angle = value - 180;
 
 
 if (angle > 0)
 return angle - 180;
 
 
 return angle + 180;
 }

通過這個(gè)方法,將他的角度在變回負(fù)數(shù)。

可以看到 圖中 x的值是-26但是輸出實(shí)際上是333。經(jīng)過方法的轉(zhuǎn)換才能成為顯示的值。

這樣就可以計(jì)算了。

2011年就有人提出這個(gè)問題了。在官方論壇下2016年還有回答。看來真是坑了不少人。

補(bǔ)充:Unity RotateAround固定旋轉(zhuǎn)

當(dāng)前顯示的為本地坐標(biāo)系

//旋轉(zhuǎn)視野
void rotateVeiw()
{
float x=Input.GetAxis("Mouse X");
float y=Input.GetAxis("Mouse Y");
//函數(shù)參數(shù)(旋轉(zhuǎn)點(diǎn),旋轉(zhuǎn)軸,旋轉(zhuǎn)量)

旋轉(zhuǎn)效果相當(dāng)于旋轉(zhuǎn)軸平移到旋轉(zhuǎn)點(diǎn)上后 沿此軸旋轉(zhuǎn)相應(yīng)的量。

例上圖,如果沿本地坐標(biāo)的Y軸旋轉(zhuǎn) 則會(huì)出現(xiàn)旋轉(zhuǎn)偏移到地下的情況。

必須使用下式 沿世界坐標(biāo)的y軸旋轉(zhuǎn)

transform.RotateAround(plear.position,Vector3.up,x);

當(dāng)單純的左右旋轉(zhuǎn)時(shí),x軸都為固定的,所以沒有區(qū)別。

但當(dāng)左右移動(dòng)后,本地坐標(biāo)的x軸和世界坐標(biāo)的x軸有出入。

例如:此時(shí)如果選用世界坐標(biāo)x軸,則左右移動(dòng)后的x軸還是固定的,左右移動(dòng)移動(dòng)一定的量后

世界就會(huì)開始傾斜:如下圖所示:

所以此時(shí)我們應(yīng)采用 本地坐標(biāo)軸x

transform.RotateAround(plear.position, transform.right, y);
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • C# 7.0之ref locals and returns(局部變量和引用返回)

    C# 7.0之ref locals and returns(局部變量和引用返回)

    這篇文章主要介紹了C# 7.0之ref locals and returns,即局部變量和引用返回,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 使用快捷鍵在Unity中快速鎖定和解鎖Inspector右上角的鎖功能

    使用快捷鍵在Unity中快速鎖定和解鎖Inspector右上角的鎖功能

    這篇文章主要為大家介紹了使用快捷鍵在Unity中快速鎖定和解鎖Inspector右上角的鎖功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • C#異步方法返回void與Task的區(qū)別詳解

    C#異步方法返回void與Task的區(qū)別詳解

    這篇文章主要給大家介紹了關(guān)于C#異步方法返回void與Task的區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • C#加密在實(shí)際中的應(yīng)用

    C#加密在實(shí)際中的應(yīng)用

    在系統(tǒng)的管理員有著實(shí)際的應(yīng)用,對(duì)于一個(gè)數(shù)據(jù)庫管理系統(tǒng)來說,數(shù)據(jù)庫安全還是挺重要的,所以在存入到數(shù)據(jù)庫的密碼通常都是加密的
    2012-11-11
  • C#讀取xml節(jié)點(diǎn)數(shù)據(jù)方法小結(jié)

    C#讀取xml節(jié)點(diǎn)數(shù)據(jù)方法小結(jié)

    這篇文章主要介紹了C#讀取xml節(jié)點(diǎn)數(shù)據(jù)的方法,實(shí)例總結(jié)了C#針對(duì)XML文件節(jié)點(diǎn)操作的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • C#?wpf利用附加屬性實(shí)現(xiàn)任意控件拖動(dòng)

    C#?wpf利用附加屬性實(shí)現(xiàn)任意控件拖動(dòng)

    這篇文章主要為大家詳細(xì)介紹了C#?WPF如何利用附加屬性對(duì)幾種拖動(dòng)方式進(jìn)行封裝,實(shí)現(xiàn)復(fù)用性,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • Unity使用ScrollRect制作翻頁

    Unity使用ScrollRect制作翻頁

    這篇文章主要為大家詳細(xì)介紹了Unity使用ScrollRect制作翻頁,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C++調(diào)用C#的DLL程序?qū)崿F(xiàn)方法

    C++調(diào)用C#的DLL程序?qū)崿F(xiàn)方法

    本文通過例子,講述了C++調(diào)用C#的DLL程序的方法,作出了以下總結(jié),具有一定的參考價(jià)值,下面就讓我們一起來學(xué)習(xí)吧
    2015-10-10
  • c#中SAPI使用總結(jié)——SpVoice的使用方法

    c#中SAPI使用總結(jié)——SpVoice的使用方法

    最近使用C#重做了點(diǎn)名系統(tǒng)(要用到TTS,讓計(jì)算機(jī)點(diǎn)名)使用了SAPI,在這里總結(jié)一下SpVoice的使用方法。
    2011-10-10
  • C#實(shí)現(xiàn)MP3播放器功能的示例代碼

    C#實(shí)現(xiàn)MP3播放器功能的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)MP3播放器功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以了解一下
    2022-12-12

最新評(píng)論

罗源县| 锦屏县| 肥乡县| 台中市| 金溪县| 新津县| 会东县| 静乐县| 淳安县| 宜川县| 岳普湖县| 新郑市| 新津县| 兴业县| 南宁市| 丹棱县| 布拖县| 黔江区| 安乡县| 乐安县| 锡林郭勒盟| 方城县| 孟州市| 孝义市| 拉萨市| 礼泉县| 韶关市| 绥滨县| 淳化县| 金坛市| 四川省| 曲阳县| 大邑县| 山西省| 仙桃市| 太谷县| 江门市| 曲麻莱县| 云安县| 皋兰县| 定远县|