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 fajarazizlaksono · Jan 05, 2013 at 12:54 PM · bugmenudie

how to make it die and make it permanent(true)?

how to make a player die at health 0 ?

how to make (visible) to be permanent (true)

I have scripts ...

and the script are still many bugs .. (did not die at health 0) and other

I want to change (Visible) becomes permanent (true) and does not change the core script, and the player has a health 0, the player will die, and the display my scary picture for a few seconds with sound , and return to the main menu

This is my script, need help,Help me upgrade it ...

 #pragma strict
 @script RequireComponent( AudioSource )
 
 public var thePlayer : Transform;
 private var theEnemy : Transform;
 
 public var speed : float = 5.0;
 
 var isOffScreen : boolean = false;
 public var offscreenDotRange : float = 0.7;
 
 var isVisible : boolean = true;
 public var visibleDotRange : float = 0.8; // ** between 0.75 and 0.85 (originally 0.8172719) 
 
 var isInRange : boolean = false;
 
 public var followDistance : float = 24.0;
 public var maxVisibleDistance : float = 25.0;
 
 public var reduceDistAmt : float = 3.1;
 
 private var sqrDist : float = 0.0;
 
 public var health : float = 100.0;
 public var damage : float = 20.0;
 
 public var enemySightedSFX : AudioClip;
 
 private var hasPlayedSeenSound : boolean = false;
 
 private var colDist : float = 5.0; // raycast distance in front of enemy when checking for obstacles
 
 
 function Start() 
 {
     if ( thePlayer == null )
     {
         thePlayer = GameObject.Find( "Player" ).transform;
     }
     
     theEnemy = transform;
 }
 
 function Update() 
 {
     // Movement : check if out-of-view, then move
     CheckIfOffScreen();
     
     // if is Off Screen, move
     if ( isOffScreen )
     {
         MoveEnemy();
         
         // restore health
         RestoreHealth();
     }
     else
     {
         // check if Player is seen
         CheckIfVisible();
         
         if ( isVisible )
         {
             // deduct health
             DeductHealth();
             
             // stop moving
             StopEnemy();
             
             // play sound only when the Man is first sighted
             if ( !hasPlayedSeenSound )
             {
                 audio.PlayClipAtPoint( enemySightedSFX, thePlayer.position ); 
             }
             hasPlayedSeenSound = true; // sound has now played
         }
         else
         {
             // check max range
             CheckMaxVisibleRange();
             
             // if far away then move, else stop
             if ( !isInRange )
             {
                 MoveEnemy();
             }
             else
             {
                 StopEnemy();
             }
             
             // reset hasPlayedSeenSound for next time isVisible first occurs
             hasPlayedSeenSound = false;
         }
     }
     
 }
 
 
 function DeductHealth() 
 {
     // deduct health
     health -= damage * Time.deltaTime;
     
     // check if no health left
     if ( health <= 0.0 )
     {
         health = 0.0;
         Debug.Log( "YOU ARE OUT OF HEALTH !" );
         
         // Restart game here!
         // Application.LoadLevel( "sceneLose" );
     }
 }
 
 
 function RestoreHealth() 
 {
     // deduct health
     health += damage * Time.deltaTime;
     
     // check if no health left
     if ( health >= 100.0 )
     {
         health = 100.0;
         //Debug.Log( "HEALTH is FULL" );
     }
 }
 
 
 function CheckIfOffScreen() 
 {
     var fwd : Vector3 = thePlayer.forward.normalized;
     var other : Vector3 = (theEnemy.position - thePlayer.position).normalized;
     
     var theProduct : float = Vector3.Dot( fwd, other );
     
     if ( theProduct < offscreenDotRange )
     {
         isOffScreen = true;
     }
     else
     {
         isOffScreen = false;
     }
 }
 
 
 function MoveEnemy() 
 {
     // Check the Follow Distance
     CheckDistance();
     
     // if not too close, move
     if ( !isInRange )
     {
         rigidbody.velocity = Vector3( 0, rigidbody.velocity.y, 0 ); // maintain gravity
         
         // --
         // Old Movement
         //transform.LookAt( thePlayer );        
         //transform.position += transform.forward * speed * Time.deltaTime;
         // --
         
         // New Movement - with obstacle avoidance
         var dir : Vector3 = ( thePlayer.position - theEnemy.position ).normalized;
         var hit : RaycastHit;
         
         if ( Physics.Raycast( theEnemy.position, theEnemy.forward, hit, colDist ) )
         {
             //Debug.Log( " obstacle ray hit " + hit.collider.gameObject.name );
             if ( hit.collider.gameObject.name != "Player" && hit.collider.gameObject.name != "Terrain" )
             {            
                 dir += hit.normal * 20;
             }
         }
     
         var rot : Quaternion = Quaternion.LookRotation( dir );
     
         theEnemy.rotation = Quaternion.Slerp( theEnemy.rotation, rot, Time.deltaTime );
         theEnemy.position += theEnemy.forward * speed * Time.deltaTime;
         //theEnemy.rigidbody.velocity = theEnemy.forward * speed; // Not Working
         
         // --
     }
     else
     {
         StopEnemy();
     }
 }
 
 
 function StopEnemy() 
 {
     transform.LookAt( thePlayer );
     
     rigidbody.velocity = Vector3.zero;
 }
 
 
 function CheckIfVisible() 
 {
     var fwd : Vector3 = thePlayer.forward.normalized;
     var other : Vector3 = ( theEnemy.position - thePlayer.position ).normalized;
     
     var theProduct : float = Vector3.Dot( fwd, other );
     
     if ( theProduct > visibleDotRange )
     {
         // Check the Max Distance
         CheckMaxVisibleRange();
         
         if ( isInRange )
         {
             // Linecast to check for occlusion
             var hit : RaycastHit;
             
             if ( Physics.Linecast( theEnemy.position + (Vector3.up * 1.75) + theEnemy.forward, thePlayer.position, hit ) )
             {
                 Debug.Log( "Enemy sees " + hit.collider.gameObject.name );
                 
                 if ( hit.collider.gameObject.name == "Player" )
                 {
                     isVisible = true;
                 }
             }
         }
         else
         {
             isVisible = false;
         }
     }
     else
     {
         isVisible = false;
     }
 }
 
 
 function CheckDistance() 
 {
     var sqrDist : float = (theEnemy.position - thePlayer.position).sqrMagnitude;
     var sqrFollowDist : float = followDistance * followDistance;
     
     if ( sqrDist < sqrFollowDist )
     {
         isInRange = true;
     }
     else
     {
         isInRange = false;
     }    
 }
 
 
 function ReduceDistance() 
 {
     followDistance -= reduceDistAmt;
 }
 
 
 function CheckMaxVisibleRange() 
 {
     var sqrDist : float = (theEnemy.position - thePlayer.position).sqrMagnitude;
     var sqrMaxDist : float = maxVisibleDistance * maxVisibleDistance;
     
     if ( sqrDist < sqrMaxDist )
     {
         isInRange = true;
     }
     else
     {
         isInRange = false;
     }    
 }
 
 
 function OnGUI()
 {
     GUI.Box( Rect( (Screen.width * 0.5) - 60, Screen.height - 35, 120, 25 ), "Health : " + parseInt( health ).ToString() );
 }
 
Comment
Add comment · Show 2
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 CryNexus · Jan 05, 2013 at 02:23 PM 0
Share

You could this have inside the Update function:

if (health == 0) // when the health reaches 0 then...

Application.LoadLevel (" "); //Inside the " " Have your Lose scene

Your Lose scene could have the GUI Image of the face, and an audiosource which is play on awake. And you could use the Repeat Invoke from 20 (or 3 etc.) and down. When it hits 0 you could have Application.Load.... Then load the $$anonymous$$ain$$anonymous$$enu. Or something like that...

Contact: CryNexus@gmail.com :D

avatar image AlucardJay · Jan 06, 2013 at 07:05 AM 0
Share

This is not your script (as you state in the question), some recognition and appreciation for my time and effort would be nice ....

1 Reply

· Add your reply
  • Sort: 
avatar image
1

Answer by AlucardJay · Jan 06, 2013 at 07:03 AM

Are you serious?! This is my script, and if you actually read it, what you want is in the comments of the function DeductHealth() :

    // Restart game here!
    // Application.LoadLevel( "sceneLose" );

I have stated numerous times that all questions regarding this guide should be asked on the pages that the guide is posted :

http://answers.unity3d.com/questions/296068/how-to-make-a-slender-man-follow-character-script.html

http://answers.unity3d.com/questions/321749/how-do-you-pick-up-pages-like-in-slender.html

I also bet you never upvoted my answer where you found this :/

Just to say I have now removed the packages for my guide. Reasons : no thanks except from 2 people total and 5 votes over 2 answers; when specifically stating don't ask new questions but post problems on those questions, there have been at least 20 questions all using my scripts, all by people that don't understand and just want their game written for them;

I am extremely disappointed. and sorry for the few people that actually read the guide, absorbed the script and learned from it, then expanded my guide into their own projects rather than copy-paste then saying this doesn't work . Hope you feel lucky to be the last one with the packages. I bet I get more comments asking me to put them back up than comments saying thanks.

Comment
Add comment · Show 3 · 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 AlucardJay · Jan 06, 2013 at 11:21 AM 0
Share

Look at the CollectPapers script, in the function DeductHealth() :

 function DeductHealth() 
 {
     // deduct health
     health -= damage * Time.deltaTime;
     
     // check if no health left
     if ( health <= 0.0 )
     {
         health = 0.0;
         Debug.Log( "YOU ARE OUT OF HEALTH !" );
         
         // Restart game here!
         // Application.LoadLevel( "sceneLose" );
     }
 }

SO, where it says Debug.Log( "YOU ARE OUT OF HEALTH !" ); , here is where you put what to happen when health is 0.

I have left the commented line :

 // Application.LoadLevel( "sceneLose" );

If you make a scene called sceneLose, then uncomment this line (remove the // ), then when health reaches 0 the scene will load. You can do anything you like here, the point is this is the part of the script you need to change for what you want to do when health reaches 0.

Please delete your answer, or convert it to a comment.

avatar image AlucardJay · Jan 27, 2013 at 01:20 PM 0
Share

Hello. Did this answer work, or did you find the suggestion useful? Please post a comment or mark an answer, for future reference by other people searching this 'site.

On the left-hand-side of the Answer box , there are the following icons :

 Thumb Up
 Number (of votes)
 Thumb Down 
 A Tick/Check $$anonymous$$ark

If an answer worked for you, click on the 'Tick/Check mark', the answer should now be highlighted in green and marked as accepted.

avatar image fajarazizlaksono · Feb 19, 2013 at 09:35 AM 0
Share

Sorry2 i not read it -_- ..

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

10 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

Related Questions

Scripts missing from create assets menu 2 Answers

Using unity interface commands with scripts 1 Answer

switching scene, first one stops to work properly 1 Answer

Character spawn menu bug 0 Answers

Menu won't hide when loading different scene 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