예제 #1
0
 /// <summary>
 /// Assigns the value of Target the value of the argument passed in.
 /// The value of Target will only be assigned if the character passed in
 /// is alive and the current instance of the Character class is alive.
 /// </summary>
 /// <param name="target">Value we are trying to assign Target to</param>
 public void SetTarget(Character target)
 {
     if (!IsDead() && !target.IsDead())
     {
         Target = target;
     }
 }
예제 #2
0
    void onHitObject(RaycastHit hit)
    {
        iDamageable damageableObject = hit.collider.GetComponent <iDamageable>();

        if (damageableObject != null)
        {
            damageableObject.TakeHit(damage, hit);
        }
        Destroy(gameObject);
    }
    void OnHitObject(Collider c, Vector3 hitPoint)
    {
        iDamageable damageableObject = c.GetComponent <iDamageable>();     //set reference to "iDamageable" script

        if (damageableObject != null)                                      //if is damageable object
        {
            damageableObject.TakeHit(damage, hitPoint, transform.forward); //run iDamageable's "TakeHit" function
        }
        GameObject.Destroy(gameObject);                                    //destory bullet
    }
예제 #4
0
    private void KillAllEnnemies()
    {
        int maxLifeEnnemies = 100;

        GameObject[] ennemies = GameObject.FindGameObjectsWithTag("Ennemi");

        foreach (GameObject ennemi in ennemies)
        {
            iDamageable ennemiToKill = ennemi.GetComponent <iDamageable>();
            ennemiToKill.TakeDammageInt(maxLifeEnnemies);
        }
    }
예제 #5
0
    void ShootGun()
    {
        RaycastHit raycastHit;
        bool       hit = UpdateViserHitLocation(out raycastHit);

        if (hit)
        {
            iDamageable ennemi = null;
            if (raycastHit.collider.GetComponent <Personnage>() == null)
            {
                ennemi = raycastHit.collider.gameObject.GetComponent <iDamageable>();
            }
            if (ennemi != null)
            {
                ennemi.TakeDammageInt(DamageAmount);
            }
        }
        IncreaseGunBar();
    }
예제 #6
0
    private void Shoot()
    {
        // raycast, stop here if missed.
        if (!Physics.Raycast(cam.transform.position, cam.transform.forward, out RaycastHit hit))
        {
            return;
        }

        // For every component with iDamageable interface, call TakeDamage()
        MonoBehaviour[] list = hit.transform.gameObject.GetComponentsInChildren <MonoBehaviour>();
        foreach (var mb in list)
        {
            if (mb is iDamageable)
            {
                iDamageable temp = mb as iDamageable;
                temp.TakeDamage(damage, cam.transform.forward);
            }
        }
    }
    public void VerifyIfBulletHit()
    {
        Ray sight = new Ray();

        sight.origin    = new Vector3(transform.position.x, transform.position.y + 6.5f, transform.position.z);
        sight.direction = transform.forward;
        RaycastHit objectHit;
        Vector3    fwd = transform.TransformDirection(Vector3.forward);

        if (Physics.Raycast(sight, out objectHit))
        {
            Debug.DrawLine(sight.origin, objectHit.point, Color.red, 10);
            ShootLaserFromTargetPosition(sight.origin);
            if (objectHit.collider.tag == "Player")
            {
                iDamageable playerDamage = objectHit.collider.gameObject.GetComponent <iDamageable>();
                playerDamage.TakeDammageInt(DamageAmount);
            }
        }
    }
예제 #8
0
    protected bool MeleeHitCheck()
    {
        bool       hitDetected = false;
        RaycastHit objectHit;

        Physics.Raycast(raycastObject.transform.position, gameObject.transform.forward, out objectHit, 7);
        if (Physics.Raycast(RaycastObject.transform.position + new Vector3(0, 5, 0),
                            gameObject.transform.forward, out objectHit, 3))
        {
            iDamageable ennemi = objectHit.collider.gameObject.GetComponent <iDamageable>();
            if (ennemi != null)
            {
                ennemi.TakeDammageInt(10);
            }
            hitDetected = true;
        }
        else
        {
            hitDetected = false;
        }
        return(hitDetected);
    }
    public void GiveDammage()
    {
        iDamageable dammagePlayer = playerTarget.GetComponent <iDamageable>();

        dammagePlayer.TakeDammageInt(DamageAmount);
    }