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 ShadowFury12 · Mar 27, 2013 at 02:07 AM · movementcontrollerrunningcooldownstamina

I cant seem to add a cooldown to this script

Hello fellow gamemakers at unity, I am not the best programmer, and I have spent an entire month trying to add a cooldown/stamina meter to this fps movement script I found but whenever I try, I always get errors or the code doesn't really do add any cooldown. I could really use some help here.

 var walkSpeed: float = 7; // regular speed
 var crchSpeed: float = 3; // crouching speed
 var runSpeed: float = 20; // run speed
  
 private var chMotor: CharacterMotor;
 private var ch: CharacterController;
 private var tr: Transform;
 private var height: float; // initial height
  
 function Start(){
 chMotor = GetComponent(CharacterMotor);
 tr = transform;
 ch = GetComponent(CharacterController);
 height = ch.height;
 }
  
 function Update(){
  
 var h = height;
 var speed = walkSpeed;
 if (ch.isGrounded && Input.GetKey("left shift") || Input.GetKey("right shift")){
 speed = runSpeed;
 }
 if (Input.GetKey("c")){ // press C to crouch
 h = 0.4 * height;
 speed = crchSpeed; // slow down when crouching
 }
 chMotor.movement.maxForwardSpeed = speed; // set max speed
 var lastHeight = ch.height; // crouch/stand up smoothly
 ch.height = Mathf.Lerp(ch.height, h, 5*Time.deltaTime);
 tr.position.y += (ch.height-lastHeight)/2; // fix vertical position
 }
Comment
Add comment · Show 4
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 robertbu · Mar 27, 2013 at 02:24 AM 0
Share

There is no attempt here at cooldown or a sta$$anonymous$$a meter that I can see. Exactly what do you want to happen?

avatar image ShadowFury12 · Mar 27, 2013 at 03:19 PM 0
Share

I have tried adding a sta$$anonymous$$a and maxsta$$anonymous$$a variable (var sta$$anonymous$$a int; and var maxsta$$anonymous$$a float; to the script and put in the update function after speed = runspeed; I put in the line below sta$$anonymous$$a = (sta$$anonymous$$a - Time.deltaTime). The I put an if statement saying- if(sta$$anonymous$$a < 0) { speed = crchspeed; yield 5.0f; sta$$anonymous$$a = maxsta$$anonymous$$a; speed = walkspeed; } this is what I have tried, sorry if it wasn't in the script I showed you, when I couldn't fix errors or get anything to work, I just undoed everything.

avatar image ShadowFury12 · Mar 27, 2013 at 05:19 PM 0
Share

yes, it looks good, but i think the syntax is wrong, I put it into unity and the console errors include- BCE0005: $$anonymous$$ identifier: 'speed'. BCE0017: The best overload for the method 'UnityEngine.$$anonymous$$onoBehaviour.Invoke(String, float)' is not compatible with the argument list '(float, String)'. BCE0067: There is already a local variable with the name 'speed'.

avatar image robertbu · Mar 27, 2013 at 05:31 PM 0
Share

I edited the code to fix the two problems.

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by robertbu · Mar 27, 2013 at 03:46 PM

Here is some modifications to your code. I'm away from my desk, so I did not paste it into mono to veryify that I did not make any syntax mistakes. But the logic is roughed in. I'm using Invoke() to restore the stamina.

  var walkSpeed: float = 7; // regular speed
     var crchSpeed: float = 3; // crouching speed
     var runSpeed: float = 20; // run speed
     var maxStamina: float = 5.0; // Seconds of running
      
     private var chMotor: CharacterMotor;
     private var ch: CharacterController;
     private var tr: Transform;
     private var height: float; // initial height
     private var canRun = true;
     private var stamina;
     
      
     function Start(){
     chMotor = GetComponent(CharacterMotor);
     tr = transform;
     ch = GetComponent(CharacterController);
     height = ch.height;
     stamina = maxStamina;
     }
      
     function Update(){
     
      
     var h = height;
     var speed = walkSpeed;
 
    if (Mathf.Approximately(speed, runSpeed)) {
         stamina -= Time.deltaTime;
         if (stamina < 0.0) {
             speed = walkSpeed;
             canRun = false;
             Invoke("RestoreStamina", 0.5);
         }
     }
     
  
     if (canRun && ch.isGrounded && Input.GetKey("left shift") || Input.GetKey("right shift")){
     speed = runSpeed;
     }
     if (Input.GetKey("c")){ // press C to crouch
     h = 0.4 * height;
     speed = crchSpeed; // slow down when crouching
     }
     chMotor.movement.maxForwardSpeed = speed; // set max speed
     var lastHeight = ch.height; // crouch/stand up smoothly
     ch.height = Mathf.Lerp(ch.height, h, 5*Time.deltaTime);
     tr.position.y += (ch.height-lastHeight)/2; // fix vertical position
     }
     
     function RestoreStamina() {
         canRun = true;
         stamina = maxStamina;
     }
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

11 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

Related Questions

The name 'Joystick' does not denote a valid type ('not found') 2 Answers

Mobile Character controller Moving in world space 1 Answer

Moving a Simple Ball [Main Player!] inside a tunnel without gravity! 1 Answer

Why does the player keep pointing in a specific direction after moving? 0 Answers

Move Object a direction with one button and move the object back with the same button? 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