Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 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 /
  • Help Room /
avatar image
0
Question by JungOmul · Nov 14, 2017 at 03:34 PM · buttonclickpresssprintsprinting

About button press sprint

Hi I'm currently making Player sprinting by pressing button. I made a button on UI and put my script. It doesn't make any error. But nothing happens. using System.Collections; using System.Collections.Generic; using UnityEngine;

 public class Sprinter : MonoBehaviour {
 
     public float sprintSpeed;
     public float coolDownTimer;
     public float durationTimer;
     private bool sprinting;
 
     void Start(){
         sprinting = false;
         sprintSpeed = 3.0f;
         coolDownTimer = 0;
         durationTimer = 0;
     }
 
     void OnClick()
     {
         if(Input.GetButton("Sprint"))
         {
             if(sprinting){
                 if(Input.GetButtonDown("Sprint") &&coolDownTimer <= 0)
                 {
                     durationTimer = 3.0f;
                     sprinting = true;
                 }
 
                 durationTimer -= Time.deltaTime;
                 if(durationTimer >= 0 &&Input.GetButtonDown("Sprint"))
                 {
                     transform.position = transform.forward * 3.0f * Time.deltaTime;
                 }
 
                 else
                 {
                     transform.position = transform.forward * 1.0f * Time.deltaTime;
                 }
 
                 coolDownTimer -= Time.deltaTime;
                 if(coolDownTimer <= 0)
                 {
                     coolDownTimer = 0;
                 }
             }
             else
             {
                 transform.position = transform.forward * 1.0f * Time.deltaTime;
             }
         }
     }
 }
 
         
 I want to make " When you press the sprint button on the UI, the player's speed goes up to 3.0f for 3 second and then have 5 second cool down." My game is FPS. Please help me.
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
1
Best Answer

Answer by Hellium · Nov 14, 2017 at 04:48 PM

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.UI;
 
 public class Sprinter : MonoBehaviour
 {
     public Button button; // Drag & Drop the button in the inspector
     public float baseSpeed;
     public float sprintSpeed;
     public float sprintDuration;
     public float cooldownDuration;
     private float sprintTime;
     private bool sprinting;
     private float currentSpeed ;
 
     void Start()
     {
         sprinting = false;
         currentSpeed = baseSpeed;
         sprintTime = -sprintDuration - cooldownDuration;
         if ( button == null )
             button = GameObject.Find( "Sprint" ).GetComponent<Button>();
         button.onClick.AddListener( OnClick );
     }
 
     void Update()
     {
         if ( sprinting && Time.time > sprintTime + sprintDuration )
         {
             sprinting = false;
             currentSpeed = baseSpeed;
         }
 
         transform.Translate( Vector3.forward * currentSpeed * Time.deltaTime );
     }
 
     public void OnClick()
     {
         // Prevent the player from spamming the button
         if ( Time.time < sprintTime + sprintDuration + cooldownDuration )
             return;
 
         sprintTime = Time.time;
         sprinting = true;
         currentSpeed = sprintSpeed;
     }
 }

Comment
Add comment · Show 13 · 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 JungOmul · Nov 14, 2017 at 05:04 PM 0
Share

Thanks. But the problem is, I have to attach it to my button. Your script doesn't make any error as $$anonymous$$e, but doesn't work. I have to choose On Click() function.. alt text

avatar image Hellium JungOmul · Nov 14, 2017 at 05:24 PM 0
Share

You did not mentionned you wanted the UI button to call automatically the function. Check my updated answer.

avatar image JungOmul Hellium · Nov 14, 2017 at 06:35 PM 0
Share

Thanks! addListener made error so I changed to AddListener. It doesn't work. Thanks anyway. I should find another way.

Show more comments
avatar image Hellium · Nov 16, 2017 at 09:50 AM 0
Share

Check my updated answer. I've got rid of initialization in the Start method so that you set the values in the inspector only.

I've created a blanck scene with only a cube and a button. I've attached the script to the cube and drag & dropped the button into the button field. It works fine. Don't forget to fill the values in the inspector.

avatar image JungOmul Hellium · Nov 16, 2017 at 10:34 AM 0
Share

Oh you updated the answer! It works!!! Thank you. But my object is moving automatically... Any idea?

avatar image Hellium JungOmul · Nov 16, 2017 at 10:56 AM 0
Share

Yes, I thought it was what you wanted according to your initial script. Set the baseSpeed to 0 if you don't want the object to automatiaclly move.

Show more comments

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

132 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

Related Questions

Get keycode of pressed button 1 Answer

The record button does not work. 0 Answers

cant regualte the sprint speed of my character,I cant change my sprint speed!!! 0 Answers

Button Press And Release Sounds 2 Answers

UI Buttons do not work when material is applied to it? 0 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