国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

四元數(shù)在旋轉(zhuǎn)的運(yùn)用-圓形煙火彈道軌跡

2019-11-11 02:51:51
字體:
供稿:網(wǎng)友

向量和四元數(shù)經(jīng)常混淆,四元數(shù)可以看做是一個(gè)向量+這個(gè)向量的旋轉(zhuǎn),這樣容易理解。

這個(gè)例子是用于射擊游戲,類似于噴子類型武器發(fā)射出多個(gè)子彈的彈道軌跡,是以瞄準(zhǔn)方向以圓形半徑或者角度的幾個(gè)點(diǎn),所以用了Quaternion.AngleAxis函數(shù)來獲得這幾個(gè)軌跡感覺運(yùn)算能簡便寫,有更好的算法的同學(xué)不妨留言探討學(xué)習(xí)下。

效果圖

using UnityEngine;using System.Collections;//圓形煙火彈道軌跡 add by thinbug.LPJ 2017.2.7public class CTestQu : MonoBehaviour { public Transform[] show; //幾個(gè)盒子,用來測試顯示彈道方向 public float angle = 5f; //擴(kuò)散角度(圓形大小0-90f之間) void OnGUI() { string txt = string.Format("當(dāng)前度數(shù):{0:F},Tan:{1:F3}", angle,Mathf.Tan(Mathf.Deg2Rad * angle)); GUI.Label(new Rect(0, 0, 680, 50), txt); } void Update () { int i; Vector3 dir; int shuliang = show.Length; //顯示幾條邊的煙火特效 dir = transform.forward; //當(dāng)前的瞄準(zhǔn)方向 Vector3 at = transform.position; Debug.DrawRay(transform.position, dir*150f, Color.red); //紅色線表示當(dāng)前方向 for ( i = 0; i < shuliang; i++) { //首先計(jì)算垂直于forward和right的 //1單位向量位置找其他發(fā)散點(diǎn) Vector3 tempPointAt = at + dir; //旋轉(zhuǎn)Z方向獲得旋轉(zhuǎn) Quaternion qtemp = Quaternion.AngleAxis(i / (float)shuliang * 360f, -transform.forward); //右方向是旋轉(zhuǎn)的擴(kuò)散方向 Vector3 newdir = (qtemp * transform.right).normalized; //黃色線表示發(fā)散方向 Debug.DrawRay(tempPointAt, newdir, Color.yellow); //獲取到其他發(fā)散點(diǎn) , 根據(jù)參數(shù)角度,計(jì)算發(fā)散長度 Vector3 tempPoint = tempPointAt + newdir * Mathf.Tan(Mathf.Deg2Rad * angle); //藍(lán)色顯示發(fā)散的向量 Debug.DrawLine(tempPointAt, tempPoint, Color.blue); //綠色顯示最終的圓形煙火彈道軌跡 Debug.DrawLine(at, tempPoint, Color.green); Vector3 newDir = tempPoint - at; //圓形煙火彈道軌跡 Quaternion q = Quaternion.LookRotation(newDir.normalized); show[i].rotation = q ; } }}

這里做下筆記用于后面旋轉(zhuǎn)參考。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 营口市| 纳雍县| 杭州市| 灯塔市| 柘荣县| 金溪县| 房产| 泸溪县| 旅游| 桃源县| 江都市| 湄潭县| 郑州市| 新郑市| 大渡口区| 博罗县| 明水县| 平顺县| 大足县| 天台县| 会泽县| 北安市| 呈贡县| 都江堰市| 靖安县| 云梦县| 清水县| 宝应县| 沭阳县| 灌南县| 宁安市| 汉寿县| 丰都县| 宁海县| 花莲县| 常宁市| 雅安市| 措勤县| 铁岭县| 望江县| 玉溪市|