1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- 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<netPlayer>();
- }
- public LivingEntity GetEntity()
- {
- return null;
- }
- public void TakeDamage(HealthEventData damageData)
- {
- //transform.root.GetComponent<zombieV2>().
- 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<BFX_BloodSettings>();
- //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<Rigidbody>();
- 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<Rigidbody>().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<BFX_BloodSettings>();
- //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<Rigidbody>().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);
- }
- }
- }
|