Unity学习笔记五 - Survival Shooter Tutorial

来源:互联网 发布:大数据智能分析平台 编辑:程序博客网 时间:2024/05/16 19:46

今天简单注释下PlayerShooting脚本

   void Update ()
    {
        timer += Time.deltaTime;  //结合下一句和Shoot函数中第一句,每帧+一定时间,超过一定时间间隔才可能执行Shoot

        if(Input.GetButton ("Fire1") && timer >= timeBetweenBullets && Time.timeScale != 0) //Fire1按下,默认左键同时每隔一定时间才能进入一次Shoot
        {
            Shoot ();
        }

        if(timer >= timeBetweenBullets * effectsDisplayTime)  //超过时间没有开火,取消开火效果,没判断支持,超过时间会执行很多次
        {
            DisableEffects ();
        }
    }


    public void DisableEffects ()
    {
        gunLine.enabled = false;  //跟据前面,使Player中LineRenderder组件停止作用
        gunLight.enabled = false;//跟据前面,使Player中Light组件停止作用,合起来就是停止开枪的效果
    }


    void Shoot ()
    {
        timer = 0f;  //重置timer

        gunAudio.Play (); //Player中AudioSource中的声音源

        gunLight.enabled = true; //跟据前面,使Player中Light组件作用,枪发光

        gunParticles.Stop ();
        gunParticles.Play (); //枪的上次粒子效果停止和本次启动,和Player上ParticleSystem组件相关

        gunLine.enabled = true; //跟据前面,使Player中LineRenderder组件作用,枪有射线
        gunLine.SetPosition (0, transform.position); //设置gunLine的一端

        shootRay.origin = transform.position; //设定光束Ray的起始点
        shootRay.direction = transform.forward;//设定光束Ray的方向,player正向

        if(Physics.Raycast (shootRay, out shootHit, range, shootableMask)) //计算shootRay和shootable层(shootableMask掩码下)的交点,在range限定的长度内,返回第一个交点给shootHit
        {
            EnemyHealth enemyHealth = shootHit.collider.GetComponent <EnemyHealth> (); //shootHit的碰撞体也就是第一击中的物体上脚本组件EnemyHealth赋值给enemyHealth
            if(enemyHealth != null)  //成功取得正确击中物体的脚本的话
            {
                enemyHealth.TakeDamage (damagePerShot, shootHit.point); //执行EnemyHealth脚本中对应函数
            }
            gunLine.SetPosition (1, shootHit.point); //设定gunLine的另一点为Ray第一命中的点,两点之间的线
        }
        else
        {
            gunLine.SetPosition (1, shootRay.origin + shootRay.direction * range); //否则设置gunLine另一端在shootRay方向上距离起始点Range长度的位置上,就是shootRay 100长度的LineRenderer表现
        }
    }

0 0
原创粉丝点击