亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

隨著時間的推移旋轉GameObject

隨著時間的推移旋轉GameObject

C#
慕村9548890 2019-09-06 16:03:53
我是新手,我嘗試開始使用Unity Engine。有人可以解釋一下,Quaternion.Slerp怎么樣?因為我想以不同的角度90,180和270旋轉一些物體。我可以在下面看到我的代碼。不幸的是,當我添加180度時,對象會做出瘋狂的事情,而不是將旋轉放到(0,180,180)這個游戲對象。我想得到(180,0,0)    public float speed = 0.1F;    private float rotation_x;    void Update()    {        if (Input.GetButtonDown("Fire1"))        {            rotation_x = transform.rotation.eulerAngles.x;            rotation_x += 180;        }        transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.Euler(rotation_x, transform.eulerAngles.y, transform.eulerAngles.z), Time.time * speed);    }
查看完整描述

3 回答

?
牛魔王的故事

TA貢獻1830條經驗 獲得超3個贊

在此之前,你不能在這樣的歐拉角上添加180,這主要是造成問題的原因。你最好直接使用quaternion,或者在變換本身上工作。


您可以將四元數視為空間方向。與已經說過的相反,如果可以的話,我建議學習如何使用它們。但是,我建議不要使用歐拉角......因為它們會采用不同的寫作慣例,有時會失敗。如果你想了解詳情,你可以看看'萬向節鎖'。


簡單地說slerp或lerp(分別代表球面線性插值或線性插值)是一種在方向A和B之間進行插值(從一個方向到另一個方向,通過在協程或其他任何地方將t從0增加到1)的方法兩者之間的區別在于slerp給你從A到B的最短路徑。


最后,當t = 1時,lerp(A,B,t)和slerp(A,B,t)會給你B.


在您的情況下,如果您想立即將空間中的對象旋轉到特定方向,我建議您使用Quaternion.AngleAxis,這是以數學方式描述四元數的最前向方法。


如果你想要添加一個旋轉,比如說實際方向是90°(兩者之間沒有動畫),你可以這樣做:


transform.rotation * = Quaternion.AngleAxis(axis_of_rotation,angle)或使用transform.rotate(取決于參數,它可以是右乘,或左:本地或世界變換)。


程序員的回答是詳細說明如何為變換設置動畫。但我確實建議你自己研究四元數,因為它會讓你全面了解空間變換。


查看完整回答
反對 回復 2019-09-06
  • 3 回答
  • 0 關注
  • 569 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號