簡體   English   中英

玩家沿着錯誤的軸旋轉?

[英]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更改為“ Horizo​​ntal”,調試消息“ Moving Forward”彈出的很好,但是我沒有在對象中進行任何旋轉–根本沒有旋轉。

如果有人能指出正確的方向,我將不勝感激,這讓我有些困惑。

如果我對您的理解正確,那么為了獲得所需的旋轉角度,您需要將pushForwardVector3.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM