? ?實現(xiàn)該功能,你需要關(guān)注以下的幾個步驟
1.獲取角色的世界坐標(biāo)
2.獲取鼠標(biāo)所在位置的世界坐標(biāo)
3.獲取角色朝向鼠標(biāo)時候的向量
4.獲取上一步驟的向量的反正切的弧度值
5.將弧度值轉(zhuǎn)化為角度
6.將該角度應(yīng)用于角色
——————————分割線——————————
? ?先從第一和第二步驟說起,獲取角色的世界坐標(biāo)非常簡單。如果已經(jīng)將C#腳本掛接到角色的話,那么只需要使用以下代碼,即可獲得玩家的世界坐標(biāo)。
transform.position
? 然后呢,需要獲得鼠標(biāo)的世界坐標(biāo)。這個需要用到C#中的Input類中的mousePosition方法獲取坐標(biāo),但是,這個坐標(biāo)數(shù)據(jù)是獲得鼠標(biāo)在屏幕上的坐標(biāo),并不是在游戲中的世界坐標(biāo),所以需要將它轉(zhuǎn)換為世界坐標(biāo),然后使用一個Vector2的對象來儲存這個世界坐標(biāo)。
Vector2 mousePosition=Camera.main.ScreenToWorldPoint(Input.mousePosition)
? 好了,以上都是鋪墊,后續(xù)才是關(guān)鍵。我們需要聲明一個float類型的變量來獲得角色的世界坐標(biāo)指向鼠標(biāo)的世界坐標(biāo)的這個向量與X軸所形成的角度。在這里我們需要使用Mathf類中的Atan2方法來獲取該向量的反切弧度值,根據(jù)我們的開發(fā)需求,該方法需要傳入向量的Y坐標(biāo)和X坐標(biāo),它會返回一個弧度值,但這并不是我們最終需求的,所以還需要將它轉(zhuǎn)換為角度。具體這么寫。
float Angle= Mathf.Atan2(mousePosition.y - transform.position.y, mousePosition.x -transform.position.x) * Mathf.Rad2Deg;
? 上面的代碼中前面的方法就是將向量轉(zhuǎn)換為與X軸的弧度,那么后面的Mathf.Rad2Deg則會返回一個常數(shù)(180/Pi),將弧度乘以這個常數(shù)可以將弧度化為角度。
? ?
? 那么接下來呢就可以把這個角度應(yīng)用到游戲角色啦!
? 在這里我們需要了解一個名叫Quaternion(四元數(shù))的類,它提供了一個Eluer的方法可以幫助角色進(jìn)行旋轉(zhuǎn),但是前提是你需要告訴角色繞哪個坐標(biāo)軸旋轉(zhuǎn)多少度,所以你需要new一個Vector3的對象來存儲這個不同坐標(biāo)軸的旋轉(zhuǎn)角度,具體你需要這么寫。
transform.rotation = Quaternion.Euler(new Vector3(0,0,Angle));
? 有人會疑問為什么在X軸和Y軸的參數(shù)中都是0,因為在Unity2D中,Z軸垂直于2D平面,我們的角色實際上也只是繞Z軸旋轉(zhuǎn),因此X和Y軸都不需要動它。
最后將這些代碼連起來,用一個方法封裝起來。取名就叫“DirectionChange”吧文章來源:http://www.zghlxwxcb.cn/news/detail-401916.html
void DiretionChange(){
//獲取鼠標(biāo)在游戲中的世界坐標(biāo)
Vector2 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
//獲取玩家坐標(biāo)和鼠標(biāo)的世界坐標(biāo)形成的向量的角度
float Angle= Mathf.Atan2(mousePosition.y - transform.position.y, mousePosition.x transform.position.x) * Mathf.Rad2Deg;
//使玩家朝向鼠標(biāo)方向
transform.rotation = Quaternion.Euler(new Vector3(0,0,Angle));
}
將這個方法在Unity的C#腳本中默認(rèn)的Update方法中調(diào)用就可以實現(xiàn)啦?。?!文章來源地址http://www.zghlxwxcb.cn/news/detail-401916.html
到了這里,關(guān)于Unity2D中讓角色旋轉(zhuǎn)朝向鼠標(biāo)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!