码迷,mamicode.com
首页 > 其他好文 > 详细

噩梦射手5 角色血量 死亡 重新加载

时间:2015-07-25 16:54:26      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:unity3d   教程   

using UnityEngine;
using UnityEngine.UI;
using System.Collections;


namespace CompleteProject
{
    public class PlayerHealth : MonoBehaviour
    {
        public int startingHealth = 100;                            // The amount of health the player starts the game with.
        public int currentHealth;                                   // The current health the player has.
        public Slider healthSlider;                                 // Reference to the UI‘s health bar.
        public Image damageImage;                                   // Reference to an image to flash on the screen on being hurt.
        public AudioClip deathClip;                                 // The audio clip to play when the player dies.
        public float flashSpeed = 5f;                               // The speed the damageImage will fade at.
        public Color flashColour = new Color(1f, 0f, 0f, 0.1f);     // The colour the damageImage is set to, to flash.




        Animator anim;                                              // Reference to the Animator component.
        AudioSource playerAudio;                                    // Reference to the AudioSource component.
        PlayerMovement playerMovement;                              // Reference to the player‘s movement.
        PlayerShooting playerShooting;                              // Reference to the PlayerShooting script.
        bool isDead;                                                // Whether the player is dead.
        bool damaged;                                               // True when the player gets damaged.




        void Awake ()
        {
            // Setting up the references.
            anim = GetComponent <Animator> ();
            playerAudio = GetComponent <AudioSource> ();
            playerMovement = GetComponent <PlayerMovement> ();
            playerShooting = GetComponentInChildren <PlayerShooting> ();


            // Set the initial health of the player.
            currentHealth = startingHealth;
        }




        void Update ()
        {
            // If the player has just been damaged...
            if(damaged)
            {
                // ... set the colour of the damageImage to the flash colour.
                damageImage.color = flashColour;
            }
            // Otherwise...
            else
            {
                // ... transition the colour back to clear.
                damageImage.color = Color.Lerp (damageImage.color, Color.clear, flashSpeed * Time.deltaTime);
            }


            // Reset the damaged flag.
            damaged = false;
        }




        public void TakeDamage (int amount)
        {
            // Set the damaged flag so the screen will flash.
            damaged = true;


            // Reduce the current health by the damage amount.
            currentHealth -= amount;


            // Set the health bar‘s value to the current health.
            healthSlider.value = currentHealth;


            // Play the hurt sound effect.
            playerAudio.Play ();


            // If the player has lost all it‘s health and the death flag hasn‘t been set yet...
            if(currentHealth <= 0 && !isDead)
            {
                // ... it should die.
                Death ();
            }
        }




        void Death ()
        {
            // Set the death flag so this function won‘t be called again.
            isDead = true;


            // Turn off any remaining shooting effects.
            playerShooting.DisableEffects ();


            // Tell the animator that the player is dead.
            anim.SetTrigger ("Die");


            // Set the audiosource to play the death clip and play it (this will stop the hurt sound from playing).
            playerAudio.clip = deathClip;
            playerAudio.Play ();


            // Turn off the movement and shooting scripts.
            playerMovement.enabled = false;
            playerShooting.enabled = false;
        }




        public void RestartLevel ()
        {
            // Reload the level that is currently loaded.
            Application.LoadLevel (Application.loadedLevel);
        }
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

噩梦射手5 角色血量 死亡 重新加载

标签:unity3d   教程   

原文地址:http://blog.csdn.net/haifeng619/article/details/47057427

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!