protected override void OnTriggerEnter(Collider other) { if (other.gameObject.layer == 9) { TakeOverBehaviour.TakeOver(other.gameObject); } Invoke("Kill", 0.02f); TimeBehaviour.EndSlowMotion(); }
private void CalculateIfPlayerHitsFromBehind(RaycastHit hit) { Vector3 playerForwardVector = transform.forward; Vector3 enemyForwardVector = hit.collider.gameObject.transform.forward; //reset height playerForwardVector.y = enemyForwardVector.y; Debug.DrawRay(hit.collider.transform.position, hit.collider.gameObject.transform.forward, Color.red, 3.0f); Debug.DrawRay(this.transform.position, transform.forward, Color.green, 3.0f); //check if player attacks from behind float dotProductResult = Vector3.Dot(playerForwardVector, enemyForwardVector); dotProductResult = dotProductResult / (playerForwardVector.magnitude * enemyForwardVector.magnitude); if (Mathf.Acos(dotProductResult) < _acceptedAngleFromBehindInRadians) { _takeOverBehaviour.TakeOver(hit.collider.gameObject); } }