Question

I'm trying to get my XBox controller working in Unity. I used this video: http://www.youtube.com/watch?v=J8HaAyLzPh4

After scripting I get the following error:

Assets/XBox360ControllerScript.cs(88,14): error CS0111: A member 
`XBox360ControllerScript.Update()' is already defined. 
Rename this member or use different parameter types.

Here is my code:

using UnityEngine;
using System.Collections;

public class XBox360ControllerScript : MonoBehaviour 
{

    // These are used to modify player movent
    float PlayerMovementSpeed = 30;
    float PlayerRotationSpeed = 100;

    // Seperating Movement and Button inputs into different functions is easier for debugging
    void Update ()
    {
        Movement();
        UserInputs();
    }

    /// <summary>
    /// This function handles movement calculations. You can adjust the code to work with different AXES if preferred.
    /// Right Thumbstick uses the 4th and 5th Input Joystick Axes.
    /// Left Thumbstick uses the X and Y Input Joystick Axes.
    /// For movement the Vertical Axis is read from moving the LEFT THUMBSTICK up and down, 
    /// and the Horizontal Axis is read from moving the LEFT THUMBSTICK left and right.
    /// Rotation is read from the RIGHT THUMBSTICK
    /// </summary>
    void Movement()
    {
        //This line is for vertical movement, using the Z AXIS
        transform.Translate(0,0,Input.GetAxis("Vertical") * Time.deltaTime * PlayerMovementSpeed);

        //This line is for horizontal movement, using the X AXIS. When combined with vertical movement it can be used for strafing.
        transform.Translate(Input.GetAxis("Horizontal") * Time.deltaTime * PlayerMovementSpeed, 0, 0);

        //This line if for rotation, using the Y AXIS
        transform.Rotate(0,Input.GetAxis("RightStick") * Time.deltaTime * PlayerRotationSpeed,0);
    }

    /// <summary>
    /// This function handles the Inputs from the buttons on the controller
    /// </summary>
    void UserInputs()
    {
        if(Input.GetButtonDown("XBox360 A"))
            Debug.Log("A Button");
        if(Input.GetButtonDown("XBox360 B"))
            Debug.Log("B Button");
        if(Input.GetButtonDown("XBox360 X"))
            Debug.Log("X Button");
        if(Input.GetButtonDown("XBox360 Y"))
            Debug.Log("Y Button");
        if(Input.GetButtonDown("XBox360 LB"))
            Debug.Log("LB Button");
        if(Input.GetButtonDown("XBox360 RB"))
            Debug.Log("RB Button");
        if(Input.GetButtonDown("XBox360 Back"))
            Debug.Log("Back Button");
        if(Input.GetButtonDown("XBox360 Start"))
            Debug.Log("Start Button");
        if(Input.GetButtonDown("XBox360 Leftstick"))
            Debug.Log("Leftstick Button");
        if(Input.GetButtonDown("XBox360 Rightstick"))
            Debug.Log("Rightstick Button");

        //Triggers are read from the 3rd JOystick Axis and read from a Sensitivity rating from -1 to 1
        if(Input.GetAxis("XBox360 Triggers") > 0.001)
            Debug.Log("Right trigger");
        if(Input.GetAxis("XBox360 Triggers") < 0)
            Debug.Log("Left trigger");

        //The Dpad is read from the 6th and 7th Joystick Axes and from a Sensitivity rating from -1 to 1
        if(Input.GetAxis("XBox360 Dpad Horizontal") > 0.001)
            Debug.Log("DPAD right button");
        if(Input.GetAxis("XBox360 Dpad Horizontal") < 0)
            Debug.Log("DPAD left button");
        if(Input.GetAxis("XBox360 Dpad Vertical") > 0.001)
            Debug.Log("DPAD up button");
        if(Input.GetAxis("XBox360 Dpad Vertical") < 0)
            Debug.Log("DPAD down button");
    }

    // Use this for initialization
    void Start () 
    {

    }

    // Update is called once per frame
    void Update () 
    {

    }
}

It is exactly as it is in the youtube video... How can I fix the error/get my controller to work.

Était-ce utile?

La solution

// Seperating Movement and Button inputs into different functions is easier for debugging
void Update ()
{
    Movement();
    UserInputs();
}

and

// Update is called once per frame
void Update () 
{
}

are conflicting. You can only have one Update() method with the same parameters (in this case none) defined in the class.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top