Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by OhiraKyou · Jul 27, 2012 at 03:34 AM · joystickgamepadvsync360sensitivity

VSync and Joysticks

When I choose a quality setting (e.g. simple) in which VSync is disabled, the alternate (360 pad) right thumbstick - which is otherwise recognized quite well by the stock MouseLook - suddenly becomes very sensitive, causing rapid spins. The mouse, however, still works the same. I'm assuming the extra frames are causing extra detections due to the continuous nature of thumbstick input. Below is a screenshot of my thumbstick settings (the original Mouse X and Y are still there as well). I'd certainly appreciate any input (no pun intended).

Also, is there a way to reorder the input list? It's rather inconvenient for my new interact key to be at the bottom of the input list, below the joystick bindings.

input settings

Comment
Add comment · Show 2
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Bunny83 · Jul 27, 2012 at 03:36 AM 0
Share

How does your code looks like that uses this axis? Do you use Time.deltaTime?

avatar image OhiraKyou · Jul 27, 2012 at 04:17 AM 0
Share

Currently, I'm using the stock $$anonymous$$ouseLook script found in the standard assets (which doesn't use Time.deltaTime). For quick reference, this is the script's contents:

using UnityEngine; using System.Collections;

/// $$anonymous$$ouseLook rotates the transform based on the mouse delta. /// $$anonymous$$inimum and $$anonymous$$aximum values can be used to constrain the possible rotation

/// To make an FPS style character: /// - Create a capsule. /// - Add the $$anonymous$$ouseLook 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 Character$$anonymous$$otor and a CharacterController component will be automatically added.

/// - Create a camera. $$anonymous$$ake the camera a child of the capsule. Reset it's transform. /// - Add a $$anonymous$$ouseLook 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.) [AddComponent$$anonymous$$enu("Camera-Control/$$anonymous$$ouse Look")] public class $$anonymous$$ouseLook : $$anonymous$$onoBehaviour {

 public enum RotationAxes { $$anonymous$$ouseXAndY = 0, $$anonymous$$ouseX = 1, $$anonymous$$ouseY = 2 }
 public RotationAxes axes = RotationAxes.$$anonymous$$ouseXAndY;
 public float sensitivityX = 15F;
 public float sensitivityY = 15F;

 public float $$anonymous$$imumX = -360F;
 public float maximumX = 360F;

 public float $$anonymous$$imumY = -60F;
 public float maximumY = 60F;

 float rotationY = 0F;

 void Update ()
 {
     if (axes == RotationAxes.$$anonymous$$ouseXAndY)
     {
         float rotationX = transform.localEulerAngles.y + Input.GetAxis("$$anonymous$$ouse X") * sensitivityX;
         
         rotationY += Input.GetAxis("$$anonymous$$ouse Y") * sensitivityY;
         rotationY = $$anonymous$$athf.Clamp (rotationY, $$anonymous$$imumY, maximumY);
         
         transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0);
     }
     else if (axes == RotationAxes.$$anonymous$$ouseX)
     {
         transform.Rotate(0, Input.GetAxis("$$anonymous$$ouse X") * sensitivityX, 0);
     }
     else
     {
         rotationY += Input.GetAxis("$$anonymous$$ouse Y") * sensitivityY;
         rotationY = $$anonymous$$athf.Clamp (rotationY, $$anonymous$$imumY, maximumY);
         
         transform.localEulerAngles = new Vector3(-rotationY, transform.localEulerAngles.y, 0);
     }
 }
 
 void Start ()
 {
     // $$anonymous$$ake the rigid body not change rotation
     if (rigidbody)
         rigidbody.freezeRotation = true;
 }

}

1 Reply

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by Bunny83 · Jul 27, 2012 at 09:54 AM

I don't have a controller to test this, but i'm pretty sure that a joystick has absolute values which a mouse is a delta-movement device. The mouse axis returns the movement that has been done in the last frame. A joystick returns a constant value which tells you how much it's tilted.

I would handle those two inputs seperately. Create another input axis, add it to the movment script and use deltaTime for the joystick.

So it would look like this:

      // [...]
      rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
      rotationY += Input.GetAxis("Joystick Y") * sensitivityY * Time.deltaTime;
      rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
      // [...]

You might want a seperate sensitivity value, but if you use only one input an a time, it doesn't matter (as long as the user can configure it ;) ).

Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image OhiraKyou · Jul 27, 2012 at 10:39 AM 0
Share

Exclamation point! Before asking this question, I tried multiplying by deltaTime only to have the mouse affected; splitting the two never occurred to me for some reason. After splitting them, I added a constant *60 multiplier (to offset the slowness caused by multiplying by deltaTime), and, for the most part, everything went smoothly (I need to add some smoothing to the pad, but it's great otherwise).

Thanks for the help!

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

6 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Joystick gamepad input overly sensitive 1 Answer

gamepad input sensitivity 0 Answers

Unity ignoring joysticks of specified number 0 Answers

How do I add input for two different local players? 1 Answer

Rotation of a object depending on where the joystick is facing 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges