using HQFPSWeapons; using System.Collections; using System.Collections.Generic; using UnityEngine; [RequireComponent(typeof(Collider))] public class player_hitbox : MonoBehaviour, IDamageable { public shotType hitboxType; netPlayer zombieScript; void Start() { zombieScript = GetComponentInParent(); } public LivingEntity GetEntity() { return null; } public void TakeDamage(HealthEventData damageData) { //transform.root.GetComponent(). if(zombieScript == null) { Debug.LogError("No playerScriptFound!"); return; } //incase if the zombie is dead already zombieScript.hitboxDamage(damageData,hitboxType); if (zombieScript.effectIdx == zombieScript.BloodFX.Length) zombieScript.effectIdx = 0; float angle = Mathf.Atan2(damageData.HitNormal.x, damageData.HitNormal.z) * Mathf.Rad2Deg + 180; var instance = Instantiate(zombieScript.BloodFX[zombieScript.effectIdx], damageData.HitPoint, Quaternion.Euler(0, angle + 90, 0)); zombieScript.effectIdx++; var settings = instance.GetComponent(); //settings.FreezeDecalDisappearance = InfiniteDecal; var attachBloodInstance = Instantiate(zombieScript.BloodAttach, transform); var bloodT = attachBloodInstance.transform; bloodT.position = damageData.HitPoint; bloodT.localRotation = Quaternion.identity; bloodT.localScale = Vector3.one * Random.Range(0.75f, 1.2f); bloodT.LookAt(damageData.HitPoint + damageData.HitNormal, damageData.HitDirection); bloodT.Rotate(90, 0, 0); Debug.Log(hitboxType.ToString()); } public void OnCollisionEnter(Collision col) { Rigidbody rb = col.transform.GetComponentInParent(); if (rb != null) { if (rb.tag == "Player") { Debug.Log($"{rb.name} Hit zombie {zombieScript.transform.name} with speed of {rb.velocity.magnitude}"); if (col.transform.GetComponent().velocity.magnitude > 0) { if (zombieScript.effectIdx == zombieScript.BloodFX.Length) zombieScript.effectIdx = 0; float angle = Mathf.Atan2(col.impulse.normalized.x, col.impulse.normalized.z) * Mathf.Rad2Deg + 180; var instance = Instantiate(zombieScript.BloodFX[zombieScript.effectIdx], col.GetContact(0).point, Quaternion.Euler(0, angle + 90, 0)); zombieScript.effectIdx++; var settings = instance.GetComponent(); //settings.FreezeDecalDisappearance = InfiniteDecal; var attachBloodInstance = Instantiate(zombieScript.BloodAttach, transform); var bloodT = attachBloodInstance.transform; bloodT.position = col.GetContact(0).point; bloodT.localRotation = Quaternion.identity; bloodT.localScale = Vector3.one * Random.Range(0.75f, 1.2f); bloodT.LookAt(col.GetContact(0).point + col.GetContact(0).normal, col.impulse); bloodT.Rotate(90, 0, 0); Debug.Log(hitboxType.ToString()); // GetComponent().AddForce(col.impulse*5); HealthEventData damageData = new HealthEventData(-col.impulse.magnitude, DamageType.Hit); TakeDamage(damageData); } } } else { // Debug.Log("Contact from " + col.transform.name + " with " + col.impulse); } } }