예제 #1
0
파일: Boss.cs 프로젝트: SeiZon/Fade
    void beam_lock()
    {
        if (!beam.enabled) beam.enabled = true;

        beam.SetPosition(0, transform.position);
        beam.SetPosition(1, beamFacing.position);

        Vector3 lookPos = player.transform.position - beamFacing.position;
        lookPos.y = 0;
        Quaternion rotation = Quaternion.LookRotation(lookPos);

        beamFacing.rotation = rotation;

        beamFacing.position = new Vector3(beamFacing.position.x, floor, beamFacing.position.z);

        if (!beamCharge.isPlaying)
        {
            audio_beam.volume = 1;
            audio_beam.loop = false;
            audio_beam.PlayOneShot(sndBeamCharge);
            beamCharge.Play();
        }

        if (beamCharge.time >= 1.5F)
        {
            audio_beam.volume = 0.1F;
            bstate = beamState.shoot;
            beamCharge.Stop();
        }
    }
예제 #2
0
파일: Boss.cs 프로젝트: SeiZon/Fade
    void beam_shoot()
    {
        if (!beamEnd.isPlaying) beamEnd.Play();

        audio_beam.loop = true;
        audio_beam.PlayOneShot(sndBeamFire);

        if (Vector3.Distance(transform.position, beamFacing.position) < beamLength)
        {
            audio_beam.volume -= 0.001F;
            beamFacing.Translate(Vector3.forward * beamSpeed * Time.deltaTime);

            beam.SetPosition(0, transform.position);
            beam.SetPosition(1, beamFacing.position);

            /*Vector3 direction = player.transform.position - transform.position;
            direction.y = floor;
            Quaternion rotation = Quaternion.LookRotation(direction);*/

            //beamFacing.localRotation = rotation;
        }
        else
        {
            audio_beam.loop = false;
            audio_beam.Stop();
            bstate = beamState.idle;
        }

        Collider[] hitColliders = Physics.OverlapSphere(beamFacing.position, 1);

        foreach (Collider c in hitColliders)
        {
            if(c.tag == "Player")
            {
                player.GetComponent<Player>().TakeDamage(beamDamage);
                Rigidbody rbody = player.GetComponent<Rigidbody>();
                rbody.AddForce((player.transform.position - transform.position).normalized * pushForce, ForceMode.Impulse);

                audio_beam.loop = false;
                audio_beam.Stop();
                bstate = beamState.idle;
            }
        }
    }
예제 #3
0
파일: Boss.cs 프로젝트: SeiZon/Fade
    void beam_idle()
    {
        if (beamFacing.position != transform.position)
            beamFacing.position = transform.position;

        if (beamFacing.rotation != transform.rotation)
            beamFacing.rotation = transform.rotation;

        if (beam.enabled)
        {
            beam.SetPosition(0, transform.position);
            beam.SetPosition(1, transform.position);
            beam.enabled = false;
        }

        if (beamEnd.isPlaying) beamEnd.Stop();

        if(curBeamCooldown <= 0)
        {
            curBeamCooldown = beamCooldown;
            bstate = beamState.lockOnPlayer;
        }
        else
        {
            curBeamCooldown--;
        }
    }