zombie_mp/Assets/Scripts/player_hitbox.cs
Sewmina Dilshan 68183e5317 initial
2021-08-23 13:28:33 +05:30

83 lines
3.7 KiB
C#

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);
}
}
}