簡體   English   中英

Unity C#玩家轉身時如何將物品移到手中

[英]Unity C# How to turn item in hands when player turns

我對團結還很陌生,但是我制作了一個基本的FPS游戲,拿着槍時,我想這樣做,所以當您的玩家轉身時,手中的物品會旋轉以顯示轉身。 例如,在玩使命召喚時,您旋轉角色時槍會旋轉。 這是我的代碼,但無法正常工作

    void Update(){
    this.rotateEquppedOnTurn();
}
private void rotateEquppedOnTurn(){
    if(this.equippedItem != null){
        InteractEquppableItem equip = this.equippedItem.gameObject.GetComponent<Interaction>() as InteractEquppableItem;
        if(equip.rotatesWhenTurn){
            float rotX = Input.GetAxis("Mouse X");
            float rotY = Input.GetAxis("Mouse Y");
            Quaternion tempRot = new Quaternion();
            Quaternion tempCam = GameObject.Find("PlayerCamera").transform.rotation;
            tempRot.x = tempCam.x + rotX;
            tempRot.y = tempCam.y + rotY;
            tempRot.z = tempCam.z;
            this.equippedItem.gameObject.transform.rotation = tempRot;
        }
    }
}

當使用此代碼旋轉角色時,噴槍只是以一種奇怪的方式旋轉,這與我從旋轉腳本中獲得的效果不盡相同

  1. 四元數不是向量
  2. 我建議您先觀看Unity網站上的矢量教程
  3. 本教程的最后一部分介紹了什么是叉積以及為什么要使用它們-特別是,您可以使用它們來獲得相對軸,您可能希望圍繞該軸進行旋轉。

不要像這樣直接分配旋轉。

this.equippedItem.gameObject.transform.rotation = tempRot;

而不是使用這樣的東西

this.equippedItem.gameObject.transform.Rotate(new Vector3(x,y,z));

您可以使用鼠標移動來得出x,y,z

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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