[英]Player rotating along wrong axis?
我的角色本質上是一個球體,但縮放比例為y1,x1.2,z1(橢球體)。
我可以在任何給定的“ pushDirection”中向對象施加力,該“ pushDirection”是角色的剛體位置減去主攝影機變換位置的乘積(這可以使角色朝攝影機所面對的方向移動–在我的“向前”位置上效果很好游戲應該始終朝着相機所面對的方向)。
但是現在,我試圖使對象向前旋轉 -朝照相機朝向的方向-而不是施加力。 我要增加扭矩。 [下面是我用目標軸表示的目標的屏幕截圖:
請注意,每當相機繞着物體旋轉時,旋轉軸就會移動。
但是,相反,我得到了一個字符旋轉的結果,如下面的屏幕截圖所示:
如上所述,隨着照相機的移動,旋轉軸隨照相機一起移動。 但我希望該對象遠離攝像機,而不是向左旋轉。 (請注意,在兩個屏幕截圖中,我都將對象懸空而沒有重力以嘗試調試其旋轉)。
我的腳本的相關位如下:
void Start () { rb = GetComponent<Rigidbody>(); pushForward = rb.transform.position - Camera.main.transform.position; } void Update() { speed = rb.velocity.magnitude; pushForward = rb.transform.position - Camera.main.transform.position; if (Input.GetKey("w")) { isForward = true; } else { isForward = false; } } void FixedUpdate () { // IF KEY IS DOWN, MOVE // if (isForward == true) { float turn = Input.GetAxis("Vertical"); rb.AddTorque(pushForward * torque * turn); Debug.Log("Moving Forward"); } }
我已經玩了這么多,我只是無法理解。 我也很困惑,好像我將Input.GetAxis更改為“ Horizontal”,調試消息“ Moving Forward”彈出的很好,但是我沒有在對象中進行任何旋轉–根本沒有旋轉。
如果有人能指出正確的方向,我將不勝感激,這讓我有些困惑。
如果我對您的理解正確,那么為了獲得所需的旋轉角度,您需要將pushForward
與Vector3.down
交叉。
IE:
void FixedUpdate() {
// IF KEY IS DOWN, MOVE //
if (isForward == true) {
var vect = Vector3.Cross(pushForward, Vector3.down);
float turn = Input.GetAxis("Vertical");
rb.AddTorque(vect * torque * turn);
Debug.Log("Moving Forward");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.