2 回答

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊
v1
找到和之間的角度v2
會(huì)得到這個(gè)角度,它與您在圖表中標(biāo)記的角度不匹配:
相反,求解 v1 和垂直于 v2 的平面之間的角度:
我們可以通過使用Vector3.ProjectOnPlane將 v1 投影到與 v2 垂直的平面,然后使用Vector3.Angle找到該投影與 v1 之間的角度來統(tǒng)一完成此操作:
Vector3?projection?=?Vector3.ProjectOnPlane(hypoth,?adjacent);? float?angle?=?Vector3.Angle(projection,?hypoth);

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊
我有一個(gè)類似的情況,我想將地形單位的碰撞器設(shè)置在玩家Jet的同一高度,同時(shí)它必須在相機(jī)的視線上,否則當(dāng)你拍攝地形單位時(shí),子彈看起來就像穿過地面上的敵方單位,這僅在您使用預(yù)期相機(jī)時(shí)才有效,在正交上,您可能根本不需要這樣做,只需將對(duì)象設(shè)置在與相機(jī)和所有東西相同的高度即可將被對(duì)齊。
這是我的代碼
void SetColliderLocation()
{
// Object on the ground
A = TerrainUnit.transform.position;
// Camera location
B = cam.transform.position;
// Enemy jet height
height = mainPlayerTransform.position.y;
// Unit Vector normalized between A and B
AB_Normalized = (A - B).normalized;
// The unit vector required to move the collider to maintain its hieght and line of sight with the camera
unitVector = (height - A.y) / AB_Normalized.y;
// Setting the location of the collidar .
collidarGameObject.transform.position = (AB_Normalized * unitVector) + A;
}
我希望它與您正在尋找的東西有多么相似。
編輯:
如果您應(yīng)用此腳本并且放置一個(gè)盒子而不是碰撞器,您將看到盒子的位置將始終位于天空上的相機(jī)和地面上的物體之間,但是相機(jī)或地面上的物體正在移動(dòng)。
- 2 回答
- 0 關(guān)注
- 124 瀏覽
添加回答
舉報(bào)