Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 14 Next capture
2021 2022 2023
2 captures
13 Jun 22 - 14 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 Hawmaro · Mar 16 at 08:47 AM · battle-system

Input.GetKeyDown gets registered twice in row

Hello, am trying to a make a turn based RPG and currently working on the battle UI. The player gets a first menu to pick his general move from (Attack, item, talk, run), if he chooses attack it leads him to a menu with the different moves the character has. My problem is that (Input.GetKeyDown(KeyCode.W) seems to instantly pick the attack menu AND the first move on the list in the same button press. thanks in advance.

 private void Update()
 {
     if (state == BattleState.PlayerAction)
     {
         HandlePlayerAction();
         
     }
     if (state == BattleState.PlayerMove)
     {
         HandlePlayerMove();

     }
 }

 private void HandlePlayerAction()
 {
     int prevSelection = currentaction;
     if (Input.GetKeyDown(KeyCode.DownArrow))
     {
         if (currentaction < 3)
             currentaction++;

     }
     else if (Input.GetKeyDown(KeyCode.UpArrow))
     {
         if (currentaction > 0)
             currentaction--;
     }
     if (prevSelection != currentaction)
         hud.UpdateActionSelection(currentaction);

     if (Input.GetKeyDown(KeyCode.W))
     {
         
         switch (currentaction)
         {
             case 0:
                 //Attack
                 PlayerMove();
                 break;
             case 1:
                 ;
                 //Item
                 break;
             case 2:
                 //Talk
                 break;
             case 3:
                 //Rung
                 break;
             default:
                 Debug.Log("Bug: selectionUI");
                 break;
         }


     }
 }
 
 private void HandlePlayerMove()
 {
     int prevSelection = currentmove;
     if (Input.GetKeyDown(KeyCode.DownArrow))
     {
         if (currentmove < playerUnit1.Monster.Moves.Count - 1)
             currentmove++;

     }
     else if (Input.GetKeyDown(KeyCode.UpArrow))
     {
         if (currentmove > 0)
             currentmove--;
     }

     if (prevSelection != currentmove)
         hud.UpdateMoveSelection(currentmove, playerUnit1);

     if (Input.GetKeyDown(KeyCode.W))
     {

         hud.EnableMoveSelector(false);
         hud.EnableDialogueText(true);
         StartCoroutine(PerformMove());

     }

 }
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 rh_galaxy · Mar 16 at 01:03 PM 1
Share

What is the definition of BattleState? What does PlayerMove() look like?

My guess is that PlayerMove() sets state = BattleState.PlayerMove.

But we can't really know without code.

avatar image Bonfire-Boy rh_galaxy · Mar 16 at 04:49 PM 0
Share

That would be my guess too. Solution would be to change Update() from a series of if blocks to a switch statement. Chances are that this a a good idea anyway (i.e. that you don't want it to be possible for multiple states to be processed in the same frame).

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by Marioooo · Mar 16 at 02:47 PM

i reccomend you for this case to use the new input system instead of manual input checking. That way you can treat any inpus as events and avoid to use the update system to handle input.

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

135 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 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 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 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 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 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 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

After battle: keep character's position 1 Answer

A menu that gets longer depending on the amount of skills you have? 1 Answer

Classic turn-based RPG battle scene question 1 Answer

Need help making a pokemon turn based system ! 1 Answer

2D Battle System In a 3D Game 3 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