Jump to content
  • Advertisement

C# Detect which controller pressed a certain button

Recommended Posts

Hey guys,

I'm working on a local multiplayer game that uses multiple controllers (joysticks) on the same computer/console. I downloaded the InControl asset that should help with the input, but I can't find a way to detect which of the connected controllers was used to perform some action (i.e. on which controller was the button pressed). The application detects the actions properly, but it doesn't make any difference if joystick 1 or 2 "sent" the action.

The only way I could accomplish this is to define specific axis (or more precisely, 20 axes for each controller) in Unity's input manager, but that seems too crude, and very unpractical to use within code.

Is there another way to know which joystick performed the given action?

Thanks

Share this post


Link to post
Share on other sites
Advertisement

Since you're using InControl to do it, you'll need to check with InControl's documentation or possibly their source.

If it is the same InControl that is the top hit on Google, it looks like their calls pass an InputDevice as a parameter if you're using their API rather than Unity's input calls. That device would map to the specific controller.

Share this post


Link to post
Share on other sites
3 minutes ago, frob said:

Since you're using InControl to do it, you'll need to check with InControl's documentation or possibly their source.

If it is the same InControl that is the top hit on Google, it looks like their calls pass an InputDevice as a parameter if you're using their API rather than Unity's input calls. That device would map to the specific controller.

I tried with InControl, but couldn't find a way, so I'm asking for any suggestion, not only InControl, but built in Unity or some third party plug in.

Share this post


Link to post
Share on other sites

If you're using Unity's built in input handler for mapped axis values, you'll need to create them all and change the settings to only detect specific joysticks in the "Joy Num" field rather than the default for all joysticks.  

Be aware that the OS can assign a controller to any joystick number.  For example, an xbox controller may be joystick 1, but unplugging it and reattaching it might assign the same controller to joystick 3.  

In one Unity game I worked with they had something like 300 or 400 entries on the input mapping.  All of them were handled by an input mapping class in the code.

Share this post


Link to post
Share on other sites
13 hours ago, frob said:

If you're using Unity's built in input handler for mapped axis values, you'll need to create them all and change the settings to only detect specific joysticks in the "Joy Num" field rather than the default for all joysticks.  

Be aware that the OS can assign a controller to any joystick number.  For example, an xbox controller may be joystick 1, but unplugging it and reattaching it might assign the same controller to joystick 3.  

In one Unity game I worked with they had something like 300 or 400 entries on the input mapping.  All of them were handled by an input mapping class in the code.

Yeah that is the approach I'm using at the moment, I was just wandering if there is a "smarter" way. Thanks anyway.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Advertisement
  • Advertisement
  • Popular Tags

  • Popular Now

  • Advertisement
  • Similar Content

    • By SickTwistGames
      Ok, firstly, Hi.
       
      This is my first post on this forum. I am an Indie Dev making my first game so bear with me when I say dumb stuff, I'm on a huge learning curve.
       
      My first question is about inventory systems for unity. I am trying to make a survival type game with crafting. I have purchased Inventory manager pro by devdog from the unity asset store and it seems like a pretty powerful assett but for an intermediate coder its a little tough to use.  I'm beginning to wonder if it was the right purchase.
      So my question is.... does anyone have any experience of inventory plugins / systems for unity and can anyone reccomend a system to me?
      It needs to have the following: Loot system, crafting system, character sheet, blueprint system,  character stats system. Ideally with as little coding as possible.
       
      Thanks
    • By ethancodes
      I've got a bug with my brick breaker style game. The bricks move down one line at a time ever 1.5 seconds. What appears to be happening is occasionally the ball will be just about to hit the brick when the brick moves down a line, and now the ball is behind it. I'm not sure how to fix this. I have two ideas but I'm not sure of implementation. 1 solution would be to check where they were and where they are going to be before rendering the frame. Then if they crossed paths, then register the brick as hit. Solution 2 would be change how the bricks move. I could maybe slide them down line by line, instead of a jump down. I'm not sure of this will fix the issue or not. Any ideas?
    • By Scouting Ninja
      Once again Unity is frustrating me to the point of insanity.
      What I am looking for is a way to find a ray intersect with the edges of the mesh, using Unity's already made collision system. I want to point out that I know how to do a line intersect, what I want to know is if Unity supports this already.

      The image above shows how I sweep a ray,intersecting the mesh. The top green image shows what I want and the red shows what Unity is giving me.
      I want to know if there is some way, to find the edges in Unity without creating a custom line intersection tool.
      Most engines I know don't use rays for this but instead use a plane like this:

      I checked the Unity "Plane intersection" but it is just a ray cast. It will still need me to find the vertices on the collision mesh to cast the ray from; if I am doing that then making my own line intersection tool is better.
       
      I looked online and can find anything on this. Also I don't want to cut the mesh, so I don't need a way to know what side is what.
      Does Unity even have collisions that support edge only detection?
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!