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 Shadowed_Phoenix · Feb 04, 2014 at 03:18 PM · c#rotationinput

Right Stick Aiming Problem (Dual Stick Shooter)

Hello, I'm currently building a dual stick shooter using a PS4 controller and after getting the right analogue stick to work properly ("3rd-axis" and "6th-axis" weirdly if anyone wants to know), I'm now having difficulties with the movement of my turret.

When the input on the y axis is positive, the aiming is fine, however when I flip the x rotation when the input is negative, it does it constantly. I'm guessing I should run some sort of check with the current axis to stop it from doing this, but I can't seem to figure it out. Here's the script anyway:

 using UnityEngine;
 using System.Collections;
 
 public class PlayerAiming : MonoBehaviour
 {
     // Update is called once per frame
     void Update ()
     {
         // We are going to read the input every frame
         Vector3 vNewInput = new Vector3(Input.GetAxis("RightStickX"), Input.GetAxis("RightStickY"), 0.0f);
         // Only do work if meaningful
         if(vNewInput.sqrMagnitude < 0.1f)
         {
             return;
         }
 
         // Set our rotation to represent the input
         vNewInput.Normalize();
         float fHeading = Vector3.Dot(Vector3.right, vNewInput);
         Vector3 vNewRotation = transform.rotation.eulerAngles;
         vNewRotation.z = fHeading * 90.0f;
 
         // Adjust our rotation if we're on the bottom half of the input circle
         if(vNewInput.y > 0.0f)
         {    
             Debug.Log(new Vector2(Input.GetAxis("RightStickX"), Input.GetAxis("RightStickY"))); //report value of right thumbstick
             
             vNewRotation.x = 180.0f - vNewRotation.x;    
         }
 
         // Apply the transform to the object        
         transform.rotation = Quaternion.Euler(vNewRotation);
     }
 }

Any Help would be appreciated thanks.

Comment
Add comment
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

3 Replies

· Add your reply
  • Sort: 
avatar image
4

Answer by Shadowed_Phoenix · Feb 05, 2014 at 01:31 PM

Managed to figure it out using some of the code from this and this

Here is the modified code if anyone is interested:

 using UnityEngine;
 using System.Collections;
 
 public class PlayerAiming : MonoBehaviour
 {
     // Update is called once per frame
     void Update ()
     {
         // We are going to read the input every frame
         Vector3 vNewInput = new Vector3(Input.GetAxis("RightStickX"), Input.GetAxis("RightStickY"), 0.0f);
         
         // Only do work if meaningful
         if(vNewInput.sqrMagnitude < 0.1f)
         {
             return;
         }
 
         // Apply the transform to the object  
         var angle = Mathf.Atan2(Input.GetAxis("RightStickX"), Input.GetAxis("RightStickY")) * Mathf.Rad2Deg;
         transform.rotation = Quaternion.Euler(angle, 0, 0);
     }
 }
Comment
Add comment · 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
1

Answer by rie studios · Nov 05, 2014 at 07:19 PM

I dont know how anyone hasnt thanked you yet but this is immensely helpful!

Comment
Add comment · 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
0

Answer by Okabim · Jan 19, 2021 at 09:29 PM

Thank you so much for this! It really helped me out a lot.

Comment
Add comment · 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

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

20 People are following this question.

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

Related Questions

Flip over an object (smooth transition) 3 Answers

PS3 Analogue Stick Axis Values 1 Answer

Help regarding World-Local Transfrom Rotation? 1 Answer

Rotating object with a mouse movement 0 Answers

C# Rotate GameObjects Regardless of List Size 2 Answers


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