// Take damage.
    public bool TakeDamage(int damage, string damageType, RaycastHit dmgInfo)
    {
        if (dead)
        {
            return(true);
        }

        int damageMult = 1;

        if (damageType == "LeftLeg" ||
            damageType == "LeftUpLeg" ||
            damageType == "RightLeg" ||
            damageType == "RightUpLeg")
        {
            DeductPart("Leg");
        }
        else if (damageType == "LeftArm" ||
                 damageType == "RightArm")
        {
            DeductPart("Arm");
        }

        switch (damageType)
        {
        case "Head":
            damageMult = 5;
            break;

        case "RightLeg":
            damageMult = 2;
            break;

        case "LeftLeg":
            damageMult = 2;
            break;

        default:
            break;
        }

        GameObject hitMarker = Instantiate(HM);

        hitMarker.transform.position = dmgInfo.point;

        HitMarker hmMarker = hitMarker.GetComponent <HitMarker>();

        hmMarker.damage      = damage * damageMult;
        hmMarker.faceTowards = playerEyes;

        health -= damage * damageMult;

        if (health <= 0)
        {
            Kill();

            return(true);
        }

        return(false);
    }
Example #2
0
 public void DestroyActiveHitMarker(float time = 0)
 {
     if (activeHitMarker)
     {
         StartCoroutine(activeHitMarker.DestroyHitMarker(time));
         activeHitMarkerCollider = null;
         activeHitMarker         = null;
     }
 }
Example #3
0
    public IEnumerator ToggleHitMarkerVisibility(HitMarker hitMarker, GameObject visual, bool toggle, float time = 0)
    {
        yield return(new WaitForSeconds(time));

        visual.SetActive(toggle);

        if (toggle)
        {
            hitMarker.curHitMarkerVisibility = HitMarker.HitMarkerVisible.VISIBLE;
        }
        else
        {
            hitMarker.curHitMarkerVisibility = HitMarker.HitMarkerVisible.HIDDEN;
        }
    }
Example #4
0
    public void Damage(float damageAmount, string damageType, Vector3 hitDirection, GameObject entity)
    {
        if (damageAmount > 0)
        {
            health -= damageAmount;
            GameObject hit          = Instantiate(hitMarker);
            Vector3    hitMarkerPos = transform.position - hitDirection;
            hit.transform.position = hitMarkerPos;
            hit.transform.rotation = Quaternion.Euler(90, 0, 0);

            HitMarker hitScript = hit.GetComponent <HitMarker>();

            hitScript.SetHitMarker(damageAmount, damageType, entity);
            lastDamagedTime = Time.time;
        }
        else
        {
            //Debug.Log("Got hit a 0");
        }
    }
Example #5
0
 // Start is called before the first frame update
 void Awake()
 {
     instance = this;
 }
Example #6
0
 public void Init(HitMarker hitMarker)
 {
     _hitMarker = hitMarker;
 }
Example #7
0
 void SetActiveHitMarker(GameObject go)
 {
     activeHitMarker = go.GetComponent <HitMarker>();
 }