• 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 RenatoB · May 27, 2011 at 11:09 AM · timebar

Help with timebar

I'm not able to finalize the script below. Please, I need instructions objective.

My problems:

  • The bar is not declining, just count the numbers

  • I would make the countdown more slowly (0.1 * time.deltaTime ever used, and it did not work)

  • How do I know that the count reached "0" in order to transport the player and reset the game?

Script:

 var bar : boolean;
 var lf = 100; //currentHealth
 var mxlf = 100; //maxHealth
 var barlf; //length of healthbar
 
 function Update(){
     if (bar == false){
         return;
     }
     else
     lf -= Time.deltaTime * 0.1;//still fast - I need to count time in seconds
 }
 
 function Start () {
     barlf = (Screen.width/ 2 /(mxlf / lf));
     bar = false;
 }
 
 function OnTriggerEnter (other : Collider) {
          bar = true;
 }
 
 
 function OnTriggerExit (other : Collider) {
         bar = false;
 }
 
 function OnGUI (){
     if(bar == false)
     return;
     GUI.Box (new Rect (10, 10, barlf, 20), lf + "/" + mxlf);
     GUI.backgroundColor = Color.yellow;//not working
 }
 
 function AdjustCurrentHealth(adj){
     lf += adj;
     if ((lf > 0) && (lf <= mxlf)){
         barlf = (Screen.width/ 2 / (lf / mxlf));
     }
     else
     {
         barlf = 0;
     }
 }

Please, if you answer, return later to this topic for any questions that I have.

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

2 Replies

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by aldonaletto · May 28, 2011 at 04:58 AM

The problem here is the type of lf: it should be declared as float. I rewrote your script and there it goes:

 // declare the vars as private unless you want them to appear in the Inspector
 // also always declare the types of each variable, or you can get in trouble again
 private var bar : boolean;
 private var lf:float = 100; //currentHealth
 private var mxlf:float = 100; //maxHealth
 private var barlf:float; //length of healthbar
 
 // I altered this function to never let the life negative
 // the type of lf is float, or you would end with a too fast bar
 function Update(){
     if (bar){
         if (lf>1){
             lf -= Time.deltaTime * 2; // this is the bar velocity
         } else 
         {
 //        ...
 //        this part of the IF will be executed when the life reachs zero
 //        do whatever you want with your dead character here
 //        ...
             print("GAME OVER");
         }
     }
 }
 
 function Start () {
     barlf = (Screen.width/ 2 /(mxlf / lf));
     bar = false;
 }
 
 function OnTriggerEnter (other : Collider) {
     bar = true;
 }
 
 function OnTriggerExit (other : Collider) {
     bar = false;
 }
 
 function OnGUI (){
     if(bar){
         GUI.color = Color.yellow; // I couldn't alter the background color, only the text
         // this box will be reduced according to the life remaining
         if (lf>1) GUI.Box (Rect(10, 10, barlf*lf/mxlf, 20),"");
         // Mathf.Floor returns the integer part of lf
         GUI.Box (Rect(10, 10, barlf, 20), Mathf.Floor(lf) + "/" + mxlf);
     }
 }
 
 function AdjustCurrentHealth(adj){
     lf += adj;
     if ((lf > 0) && (lf <= mxlf)){
         barlf = (Screen.width/ 2 / (lf / mxlf));
     }
     else
     {
         barlf = 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
0

Answer by Eli-Davis · May 27, 2011 at 03:52 PM

well to slow it down to count down by seconds you simply just say Time.deltaTime * 1

and guessing on the count hitting zero..

 if(lf <= 0){
 //reset what ever you want
 }
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.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

3 People are following this question.

avatar image avatar image avatar image

Related Questions

Some help with time bar 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