這應該很簡單!
我想在我的角色上實體化一個粒子效果,我需要它在角色本地空間的Z軸上 1。
我試圖在我的角色上實體化一個粒子效果,我需要它在角色的區域空間的Z軸上 1,也就是說,它總是在角色前面 1。
這是我目前的代碼:
public void PlayEffect()
{
Instantiate(slashEffect, wielder.transform.position new Vector3 (0, 1, 1), wielder.transform.rotation) ;
}
目前,這導致它在世界空間中總是生成z 1,這意味著有時它在我的角色前面,有時在我后面,這取決于我的方向。
什么是正確的方法呢?
uj5u.com熱心網友回復:
將位置從本地空間轉換到世界空間。
例如:
public void PlayEffect()
{
Instantiate(slashEffect, wielder.transform.TransformPoint(new Vector3 (0, 1, 1)>, wielder.transform.rotation) ;
}
這需要將0, 1, 1作為你的wielder本地空間的一個矢量,這意味著,如果你將創建一個子物件并將其設定為本地位置,這就是你的物件將在世界空間中被生成的位置。
請注意,這也考慮到了wielder的縮放比例!
如果你不想考慮縮放,而是使用Quaternion運算子*,如
public void PlayEffect()
{
Instantiate(slashEffect, wielder.transform.position wielder.transform.rotation * new Vector3(0, 1, 1) , wielder.transform.rotation) ;
}
這所做的是使用世界空間的偏移向量0, 1, 1,但然后根據wielder在世界空間的旋轉,旋轉該向量而不改變其大小。
uj5u.com熱心網友回復:
我們你可以試試:
public void PlayEffect()
{
Instantiate(slashEffect, wielder.transform.localPosition new Vector3 (0, 1, 1), wielder.transform.rotation) ;
}
因為transform.localPosition獲取該游戲物件的本地位置。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/329095.html
標籤:
