Quantcast
Channel: Questions in topic: "die"
Viewing all articles
Browse latest Browse all 115

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

$
0
0
**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() ); }

Viewing all articles
Browse latest Browse all 115

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>