2011-12-11 13 views
11

मेरे खेल में मेरे पास एक कैमरा है और मैं इस कैमरे से जुड़ा एक एफपीएस जैसे रोटेशन चाहता हूं।यूनिटी एफपीएस रोटेशन कैमरा

तो अगर मैं अपने कर्सर को बाईं ओर ले जाता हूं, तो मैं चाहता हूं कि मेरा कैमरा बाईं ओर घुमाए। अगर मैं अपना कर्सर ऊपर ले जाता हूं, तो कैम को देखना चाहिए, आदि

वर्तमान में यह आंशिक रूप से काम कर रहा है। मैं बाएं और दाएं, ऊपर और नीचे देख सकता हूं। समस्या तब होती है जब मैं नीचे देखता हूं और फिर अपना कर्सर बाएं और दाएं स्थानांतरित करता हूं। यह मुझे एक "रोल" प्रभाव देता है।

को देखने के लिए इस वीडियो को मैं वास्तव में क्या मतलब देखें: http://www.screencast.com/t/Phedh8H0K13

जाहिर है जब मैं नीचे देखो मैं अभी भी एक "रोल" प्रभाव के बजाय एक "यॉ" प्रभाव करना चाहते हैं। किसी को भी कोई विचार है कि यह कैसे करें? यह वही है मैं अब तक है:

// Update is called once per frame 
public override void update() 
{ 
    this.camera.transform.rotation *= 
     Quaternion.AngleAxis(Time.deltaTime * sensitivityRoll * Input.GetAxis("Vertical"), Vector3.forward); 

    this.camera.transform.rotation *= 
     Quaternion.AngleAxis(Time.deltaTime * sensitivityYaw * Input.GetAxis("Mouse X"), Vector3.up); 

    this.camera.transform.rotation *= 
     Quaternion.AngleAxis(Time.deltaTime * sensitivityPitch * Input.GetAxis("Mouse Y"), Vector3.left); 
} 

उत्तर

10

मैं सिर्फ इस विषय में मेरा उत्तर मिला:

सी # मोनो कोड:

http://forum.unity3d.com/threads/109250-Looking-with-the-Mouse?highlight=person+camera


उस विषय से कोड:

using UnityEngine; 
using System.Collections; 

/// MouseLook rotates the transform based on the mouse delta. 
/// Minimum and Maximum values can be used to constrain the possible rotation 

/// To make an FPS style character: 
/// - Create a capsule. 
/// - Add the MouseLook script to the capsule. 
/// -> Set the mouse look to use LookX. (You want to only turn character but not tilt it) 
/// - Add FPSInputController script to the capsule 
/// -> A CharacterMotor and a CharacterController component will be automatically added. 

/// - Create a camera. Make the camera a child of the capsule. Reset it's transform. 
/// - Add a MouseLook script to the camera. 
/// -> Set the mouse look to use LookY. (You want the camera to tilt up and down like a head. The character already turns.) 
[AddComponentMenu("Camera-Control/Mouse Look")] 
public class MouseLook : MonoBehaviour { 

    public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 } 
    public RotationAxes axes = RotationAxes.MouseXAndY; 
    public float sensitivityX = 15F; 
    public float sensitivityY = 15F; 

    public float minimumX = -360F; 
    public float maximumX = 360F; 

    public float minimumY = -60F; 
    public float maximumY = 60F; 

    float rotationY = 0F; 

    void Update() 
    { 
     if (axes == RotationAxes.MouseXAndY) 
     { 
      float rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX; 

      rotationY += Input.GetAxis("Mouse Y") * sensitivityY; 
      rotationY = Mathf.Clamp (rotationY, minimumY, maximumY); 

      transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0); 
     } 
     else if (axes == RotationAxes.MouseX) 
     { 
      transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityX, 0); 
     } 
     else 
     { 
      rotationY += Input.GetAxis("Mouse Y") * sensitivityY; 
      rotationY = Mathf.Clamp (rotationY, minimumY, maximumY); 

      transform.localEulerAngles = new Vector3(-rotationY, transform.localEulerAngles.y, 0); 
     } 
    } 

    void Start() 
    { 
    //if(!networkView.isMine) 
     //enabled = false; 

     // Make the rigid body not change rotation 
     //if (rigidbody) 
      //rigidbody.freezeRotation = true; 
    } 
} 
+0

वर्षों के अंत में लेकिन उत्तर के लिए धन्यवाद, यह वही है जो मैं ढूंढ रहा था! – user1354784

संबंधित मुद्दे