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 LittleCat1 · Mar 06, 2012 at 11:31 PM · respawnlivesdead

Not losing lives

Hi, I've got two scripts here, for when my object falls off the edge - it's meant to fall off the edge, respawn and lose a life, yet while Debug.Log ("Respawned Player 1") fires, lose a life doesn't. I've been racking my head on this a while :( I've given the guitextures placeholders, but they aren't changing. :(

Lives 2 Player 1.js

  private var dead = false;
      function OnCollisionEnter(hit : Collision)
      {
          if(hit.gameObject.tag == "DeadArea")
          {
                 dead = true;      
                Lives1.LIVES1 -= 3;
          }
      }
  function LateUpdate()
  {
  if(dead){
      transform.position = Vector3(40,16,13); 
      dead = false;
      Debug.Log("Respawned Player 1");
  }
     else {
      Debug.Log("Alive");
  }
  }

 

Lives1.js

var Health1 : Texture2D; var Health2 : Texture2D; var Health3 : Texture2D;

  static var LIVES1 = 3;
  function Update () 
  {
      switch(LIVES1)
      {
          case 3:
              Debug.Log ("1 life lost");
              guiTexture.texture = Health3;
          break;
          case 2:
              guiTexture.texture = Health2;
          break;
          case 1:
              guiTexture.texture = Health1;
          break;
          case 0:
              //Application.LoadLevel(0);
          break;
      }
  }



Thanks

Comment
Add comment · Show 3
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 fafase · Mar 07, 2012 at 01:41 PM 0
Share

Well, I would put the debug.log in the case2 because the case3 is the starting point. The way you have now is that it shows at starting and then it stops showing when you lose a life. Try ins$$anonymous$$d to Debug.Log(LIVES1); to see if the variable is changing.

avatar image Anne_Marije · Mar 07, 2012 at 02:00 PM 1
Share

Why are you doing -3 ins$$anonymous$$d of -1? Now LIVES1 becomes 3-3 =0 and in case 0 nothing is done. btw I thought I saw this as answer earlier.

avatar image fafase · Mar 07, 2012 at 03:57 PM 0
Share

Yep actually that would be your reason, didn't see that one...

2 Replies

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

Answer by Julien-Lynge · Mar 07, 2012 at 06:43 PM

@Anne_Marije and @fafase already pretty much answered this in the comments, but here it is as an answer:

Well, I would put the debug.log in the case2 because the case3 is the starting point. The way you have now is that it shows at starting and then it stops showing when you lose a life. Try instead to Debug.Log(LIVES1); to see if the variable is changing.

Why are you doing -3 instead of -1? Now LIVES1 becomes 3-3 =0 and in case 0 nothing is done. btw I thought I saw this as answer earlier.

Yep actually that would be your reason, didn't see that one...

One more note: The way you're doing this (using Update) is needlessly processor expensive - you're changing the guiTexture every single frame. It would be much better to put your switch within a public or static method and call that method when you want to update the LIVES1 count. Your LateUpdate is also very wasteful. Is there a reason you can't just move that code up to where you're setting dead = true? E.g.

     function OnCollisionEnter(hit : Collision)
     {
         if(hit.gameObject.tag == "DeadArea")
         {
             transform.position = Vector3(40,16,13); 
             Debug.Log("Respawned Player 1");    
             Lives1.LoseALife();
         }
     }

With that, you can get rid of the dead variable and the LateUpdate()

Your second file could then read

 static var LIVES1 = 3;

 static function LoseALife()
 {
     LIVES1 -= 1;
     switch(LIVES1)
     {
        case 3:
          Debug.Log ("1 life lost");
          guiTexture.texture = Health3;
        break;
 
        case 2:
          guiTexture.texture = Health2;
        break;
 
        case 1:
          guiTexture.texture = Health1;
        break;
 
        case 0:
          //Application.LoadLevel(0);
        break;
     }
 }

Apologies if this doesn't work out of the box - I'm a C# programmer, not JS.

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 LittleCat1 · Mar 07, 2012 at 11:49 PM

Thank you both :)

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

7 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Character losing life event not firing 1 Answer

How to implement a respawn/lives system in Space Shooter (the tutorial game)? 0 Answers

Lives/Death Script 1 Answer

need help with enemy script 1 Answer

How do I kill off my player, reduce his lives and respawn him? 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