यूनिटी सी # प्लेयर चालू होने पर आइटम को हाथ में कैसे चालू करें

मैं एकता के लिए काफी नया हूं लेकिन मेरे पास एक बंदूक पकड़े हुए एक मूल एफपीएस गेम बनाया गया है, जब मैं आपका खिलाड़ी बदलता हूं तो मैं इसे बनाना चाहता हूं, हाथों में आइटम मोड़ने के लिए घूमता है। उदाहरण के लिए, कर्तव्य की कॉल करते समय, जब आप अपने चरित्र को घुमाते हैं तो बंदूक घुमाती है। यह मेरे पास कोड है लेकिन यह काम नहीं कर रहा है

    void Update(){
    this.rotateEquppedOnTurn();
}
private void rotateEquppedOnTurn(){
    if(this.equippedItem != null){
        InteractEquppableItem equip = this.equippedItem.gameObject.GetComponent() 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;
        }
    }
}

इस कोड के साथ चरित्र को बदलते समय, बंदूक बस एक अजीब तरीके से घूमती है, यह रोटेशन स्क्रिप्ट से काफी अपेक्षा नहीं करता

0

2 उत्तर

  1. Quaternions are not vectors.
  2. I suggest you start by watching the vector tutorial on Unity's web site.
  3. The last bit of the tutorial goes over what cross products are and why you would use them - specifically, you can use them to obtain a relative axis around which you may want to rotate something.
0
जोड़ा

इस तरह घूर्णन सीधे निर्दिष्ट न करें।

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

इसके बजाय इस तरह कुछ उपयोग करें

this.equippedItem.gameObject.transform.Rotate (नया वेक्टर 3 (एक्स, वाई, जेड));

आप माउस गति का उपयोग कर एक्स, वाई, जेड प्राप्त कर सकते हैं

0
जोड़ा