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 lordgimpet · Jul 09, 2021 at 03:13 AM · delaytimers

Trying to get Timed button presses within a timed window

I'm trying to have this behave in such a way that pressing button repeatedly performs and action like say flap wings or whatever with time set via a float that sets the time between presses the effect lasts before starting to descend, to avoid insane mashing.
furthermore to have an internal timer that starts on the first press and after a set time it disables the button use entering a tired state with the player falling, with it resetting once grounded.

Now i have it working to a point just everything is inconsistent, in that i press the button too slow it gets tired after one press, if i mash it fast enough i gain infinite height. i have 2 intended variables. Hover Duration the time between each press, and Hover time being the overall time, I've been trying various things but i'm starting to become lost in my own work and cant see what probably is obvious

  #region Hover Methods
     void Hover_InitialEvents()
     {
         HoverTimer = HoverDurration;
         // Sounds.FlySound();
         isTired = false;
 
         //Disable Multiple Flights
         SpecialActionAvailiable = false;
 
         //Set Animator Parameters
         CharacterAnimator.SetTrigger("GenericT");
         CharacterAnimator.SetInteger("Action", 82);
         CharacterAnimator.SetFloat("YSpeed", Player.p_rigidbody.velocity.y);
         CharacterAnimator.SetFloat("GroundSpeed", Player.p_rigidbody.velocity.magnitude);
         CharacterAnimator.SetBool("Grounded", Player.Grounded);
         CharacterAnimator.SetBool("isRolling", false);
         if (HoverTimer <= 0)
         {
             CharacterAnimator.SetBool("isTired", true);
         }
         else
         {
             CharacterAnimator.SetBool("isTired", false);
         }
         CharacterAnimator.SetInteger("Homing End Int", 0);
         //  Sounds.FlySound();
  
     }
     void Hover_FixedUpdate()
     {
         //Do flight timer countdown
         HoverTimer -= Time.deltaTime;
 
 
         if (Player.p_rigidbody.velocity.y < FallSpeed)
         {
             Player.p_rigidbody.velocity = new Vector3(Player.p_rigidbody.velocity.x, FallSpeed, Player.p_rigidbody.velocity.z);
         }
         
        if (Player.Grounded)
         {
             isTired = false;
             Actions.ChangeAction(0);
             Actions.Action06.BounceCount = 0;
             // Sounds.StopAudioLoop();
         }
     
 }
     void Hover_Update()
     {
         CharacterAnimator.SetFloat("YSpeed", Player.p_rigidbody.velocity.y);
 
         HoverTimer -= Time.deltaTime;
         if (HoverTimer < 0 && !isTired)
         {
             HoverTimer = 0f;
             isTired = true;
         }
 
         //check if player is tapping R1 and isn't tired
         if (InputManager.GetButtonDown("R1-Roll") && !isTired)
         {
             Debug.Log("Testing if tapped key");
             Player.AddVelocity(new Vector3(0, FlyAccell, 0));
         }
 
         //set animation angle
         if (!Player.Grounded)
         {
             Vector3 VelocityMod = new Vector3(Player.p_rigidbody.velocity.x, 0, Player.p_rigidbody.velocity.z);
             Vector3 RotateMod = new Vector3(Player.RawInput.x, 0, Player.RawInput.y);
             Quaternion GlideRot = Quaternion.LookRotation(RotateMod, transform.up);
             Quaternion CharRot = Quaternion.LookRotation(VelocityMod, transform.up);
             CharacterAnimator.transform.rotation = Quaternion.Lerp(CharacterAnimator.transform.rotation, CharRot, Time.deltaTime * 200);
         }
     }
 
     #endregion
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

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by wyatts · Jul 09, 2021 at 04:29 AM

The only thing stopping repeat wing flapping is the variable isTired = true

And from what I can see you only get tired after the HoverTimer runs out.

I think you're meaning to set isTired = true immediately after the flap and then set it to false after the timer runs out.

Might help to update the name to something more specific like canFlap or flapOnCooldown

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

120 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

Related Questions

How to add a delay to a bomb explostion 1 Answer

I don't understand "WaitForSeconds" 2 Answers

Delay when loading new level :( 1 Answer

need to create delay, for something that will execute every frame, for a bit of time 1 Answer

How to make objects fall when the player gets close 4 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