TakeDamage() 공개 메소드

public TakeDamage ( int amount ) : void
amount int
리턴 void
예제 #1
0
    public override void Update(PlayerController pc)
    {
        if (!pc.lineRenderer.gameObject.activeSelf)
        {
            pc.lineRenderer.gameObject.SetActive(true);
        }
        Vector3    endRaycastPos = Vector3.forward * pc.playerModel.laserDistance;
        RaycastHit hit;

        if (Physics.Raycast(new Ray(pc.lineRenderer.transform.position, pc.lineRenderer.transform.forward), out hit, pc.playerModel.laserDistance, pc.shootLayerMask.value))
        {
            endRaycastPos = Vector3.forward * hit.distance;
            GroundEnemy gEnemy = hit.collider.GetComponent <GroundEnemy>();
            if (gEnemy != null)
            {
                gEnemy.TakeDamage(pc.playerModel.laserDamage);
            }
            else
            {
                FlyingEnemy fEnemy = hit.collider.GetComponent <FlyingEnemy>();
                if (fEnemy != null)
                {
                    fEnemy.TakeDamage(pc.playerModel.laserDamage);
                }
            }
        }
        pc.lineRenderer.SetPosition(1, endRaycastPos);
        time -= Time.deltaTime;
        pc.Move();
        pc.Aim();
        pc.CheckHabilities();
    }
    private void Explode()
    {
        hasExploded = true;
        //Instantiate(explosionEffect, transform.position, transform.rotation);

        Collider[] colliders = Physics.OverlapSphere(transform.position, explosionRadius);

        foreach (Collider nearbyObject in colliders)
        {
            /*Rigidbody rgb = nearbyObject.GetComponent<Rigidbody>();
             * if (rgb != null)
             * {
             *  rgb.AddExplosionForce(force, transform.position, explosionRadius);
             * }*/

            GroundEnemy gEnemy = nearbyObject.GetComponent <GroundEnemy>();
            if (gEnemy != null)
            {
                gEnemy.TakeDamage(damage);
            }
            else
            {
                FlyingEnemy fEnemy = nearbyObject.GetComponent <FlyingEnemy>();
                if (fEnemy != null)
                {
                    fEnemy.TakeDamage(damage);
                }
            }
            Destroy(gameObject);
        }
        Destroy(gameObject);
    }
예제 #3
0
    void OnTriggerEnter(Collider other)
    {
        FlyingEnemy enemy = other.GetComponent <FlyingEnemy>();

        if (enemy != null)
        {
            enemy.TakeDamage();
            Destroy(gameObject);
        }
    }
예제 #4
0
 void OnTriggerEnter(Collider col)
 {
     if (col.gameObject.layer == LayerMask.NameToLayer("Enemy"))
     {
         GroundEnemy gEnemy = col.GetComponent <GroundEnemy>();
         if (gEnemy != null)
         {
             gEnemy.TakeDamage(damage);
         }
         else
         {
             FlyingEnemy fEnemy = col.GetComponent <FlyingEnemy>();
             if (fEnemy != null)
             {
                 fEnemy.TakeDamage(damage);
             }
         }
         Destroy(gameObject);
     }
 }
예제 #5
0
    // Update is called once per frame
    void Update()
    {
        duration -= Time.deltaTime;
        if (duration <= 0)
        {
            Destroy(gameObject);
        }

        previousPosition = transform.position;
        transform.Translate(Vector3.forward * speed * Time.deltaTime);

        RaycastHit[] hits = Physics.RaycastAll(previousPosition, (transform.position - previousPosition).normalized, (transform.position - previousPosition).magnitude, GameManager.instance.player.shootLayerMask);
        for (int i = 0; i < hits.Length; i++)
        {
            LayerMask layer = hits[i].collider.gameObject.layer;
            //Debug.Log(hits[i].collider.name);
            if (layer == LayerMask.NameToLayer("Enemy"))
            {
                GroundEnemy gEnemy = hits[i].collider.GetComponent <GroundEnemy>();
                if (gEnemy != null)
                {
                    gEnemy.TakeDamage(damage);
                }
                else
                {
                    FlyingEnemy fEnemy = hits[i].collider.GetComponent <FlyingEnemy>();
                    if (fEnemy != null)
                    {
                        fEnemy.TakeDamage(damage);
                    }
                }
                Destroy(gameObject);
            }
            if (layer == LayerMask.NameToLayer("Geometry"))
            {
                Destroy(gameObject);
            }
        }
    }
예제 #6
0
    public void Shoot()
    {
        switch (actualWeapon)
        {
        case Weapon.rifle:
            actualARShootCooldown = playerModel.shootARCooldown;
            GameObject bulletAR;
            RaycastHit hitAR;
            if (Physics.Raycast(Camera.main.transform.position, Camera.main.transform.forward, out hitAR, Mathf.Infinity, shootLayerMask))
            {
                Vector3 dir = hitAR.point - bulletSpawner.transform.position;
                dir.Normalize();
                bulletAR = Instantiate(bulletARPrefab, bulletSpawner.transform.position, bulletSpawner.transform.rotation);
                bulletAR.transform.forward = dir;
                //bulletAR.GetComponent<Rigidbody>().AddForce(dir * playerModel.shootForceAR * bulletAR.GetComponent<Rigidbody>().mass, ForceMode.Impulse);
            }
            else
            {
                bulletAR = Instantiate(bulletARPrefab, bulletSpawner.transform.position, Camera.main.transform.rotation);
                //bulletAR.GetComponent<Rigidbody>().AddForce(bulletSpawner.transform.forward * playerModel.shootForceAR * bulletAR.GetComponent<Rigidbody>().mass, ForceMode.Impulse);
            }

            actualOverheat += playerModel.bulletOverheat;

            gc.uiController.ChangeAROverheat(actualOverheat);
            if (actualOverheat >= playerModel.maxOverheatAR)
            {
                actualOverheat = playerModel.maxOverheatAR;
                saturatedAR    = true;
            }
            break;

        case Weapon.shotgun:
            /*muzzleFlash.Play();
             * muzzleFlash.GetComponentInChildren<WFX_LightFlicker>().StartCoroutine("Flicker");*/

            for (int i = 0; i < pellets.Count; i++)
            {
                pellets[i] = Random.rotation;
                Quaternion rot = Quaternion.RotateTowards(bulletSpawner.transform.rotation, pellets[i], playerModel.shotgunSpreadAngle);
                RaycastHit hit;
                if (Physics.Raycast(Camera.main.transform.position, rot * Vector3.forward, out hit, playerModel.rangeShotgun, shootLayerMask))
                {
                    Debug.DrawRay(Camera.main.transform.position, rot * Vector3.forward, Color.red);

                    //GameObject impact = Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal));
                    GameObject impactHoleGO = Instantiate(impactHole, new Vector3(hit.point.x, hit.point.y + 0.1f, hit.point.z), Quaternion.LookRotation(hit.normal));

                    impactHoleGO.transform.parent = hit.transform;

                    GroundEnemy gEnemy = hit.collider.GetComponent <GroundEnemy>();
                    if (gEnemy != null)
                    {
                        gEnemy.TakeDamage(playerModel.shotgunDamage);
                    }
                    else
                    {
                        FlyingEnemy fEnemy = hit.collider.GetComponent <FlyingEnemy>();
                        if (fEnemy != null)
                        {
                            fEnemy.TakeDamage(playerModel.shotgunDamage);
                        }
                    }

                    /*imitHoles.Add(impactHoleGO);
                     *
                     * if (limitHoles.Count == 25)
                     * {
                     *  Destroy(limitHoles[0]);
                     *  limitHoles.Remove(limitHoles[0]);
                     * }
                     *
                     * GameController.instance.destroyObjects.Add(impactHoleGO);*/

                    //Destroy(impact, 2f);
                    Destroy(impactHoleGO, 20f);
                }
                actualShotgunShootCooldown = playerModel.shootShotgunCooldown;
                shotgunShotted             = true;
            }
            break;

        case Weapon.launcher:
            GameObject grenade = Instantiate(grenadePrefab, bulletSpawner.transform.position, bulletSpawner.transform.rotation);
            grenade.GetComponent <Rigidbody>().AddForce(bulletSpawner.transform.forward * playerModel.shootForceLauncher * grenade.GetComponent <Rigidbody>().mass, ForceMode.VelocityChange);
            ChangeGrenadeAmmo();
            break;
        }
    }