最近要使用到算圓,因此想到以前常用的三角函數,sin、cos
Mathf.sin 官方的api裡面註明了
Returns the sine of angle f in radians.
他輸入的是弧度,所以如果想求 圓上某個點的座標,要先把弧度轉換成角度
什麼是弧度呢?
看下圖應該很明顯了XD
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmb0qnAglsLHAyXZ_rqlRKHeEUAHkoDUvLetQKcccxiNmW4D5xutV4dQO8uund8PNRpp_7mswPFx67RBK7lu1Xei6vGKHIp3oZRMUQGmh4-eUVNQge2-DLjgEC-sHAkU5NAva8TmC5VdQ/s320/300px-Circle_radians.gif)
(取自維基百科)
兩者關係就是
1弧度 = 360°/2π ≒ 57.29° 1° = 2π/360° ≒ 0.0174533(弧度)
這是比較公式化的,如果自己去算的話,就是照上面的圖,180°,分成180份
然後除以長度,就會得出0.017453....
這樣就知道1度等於0.0174533弧度,假如想求90度的話,就*90就好了
Mathf裡面已經定義好常數給你使用了
分別是
Mathf.Deg2Rad跟Mathf.Rad2Deg
以下簡單示範一下
float angleY = Mathf.Sin(60*Mathf.Deg2Rad); float angleX = Mathf.Cos(60*Mathf.Deg2Rad); Point1 = new Vector2(angleX, angleY);
Debug.DrawLine(Vector2.zero, Point1,Color.green);
結果: (( 其他線是測試用,上述代碼出現的是綠色那條))
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggYQIUNk5xgRSXmTKzWtDyRQazTw24k6jSv7Jdpu0YLHb1BPfxvmNRVakWw88nrZ5lTrgBGc8Xr_qYbbb_eM7o8wz17HHM5IxquL7fEHwHeRTuzM0w2ytWjXFfr2uh8bYciQYzncysjr0/s320/Point.png)
而使用Sin可以使用拿來移動物體
使用上像是這樣
private Vector3 _startPosition; void Start() { _startPosition = transform.position; } void Update() { transform.position = _startPosition + new Vector3(Mathf.Sin(Time.time), 0.0f, 0.0f); }
這樣就會有平滑平滑的感覺啦~
沒有留言:
張貼留言