using UnityEngine; using System.Collections; using System.Collections.Generic; using GameKitController.Audio; public class taserProjectile : projectileSystem { [Header ("Main Settings")] [Space] public LayerMask layer; [Space] public bool useLayerMaskToIgnore; public LayerMask layerMaskToIgnore; [Space] [Header ("Ragdoll Settings")] [Space] public float sedateDelay; public bool useWeakSpotToReduceDelay; public bool sedateUntilReceiveDamage; public float sedateDuration; public bool useActionSystemOnImpact; public string actionSystemOnImpactName; //when the bullet touchs a surface, then public void checkObjectDetected (Collider col) { if (canActivateEffect (col)) { if (currentProjectileInfo.impactAudioElement != null) { currentProjectileInfo.impactAudioElement.audioSource = GetComponent (); AudioPlayer.PlayOneShot (currentProjectileInfo.impactAudioElement, gameObject); } setProjectileUsedState (true); //set the bullet kinematic objectToDamage = col.GetComponent ().gameObject; mainRigidbody.isKinematic = true; if ((1 << col.gameObject.layer & layer.value) == 1 << col.gameObject.layer) { if (useLayerMaskToIgnore) { if ((1 << col.gameObject.layer & layerMaskToIgnore.value) == 1 << col.gameObject.layer) { setProjectileUsedState (false); setIgnoreProjectileWithAbilityState (true); checkSurface (col); return; } } bool isCharacter = applyDamage.isCharacter (objectToDamage); if (isCharacter) { objectToDamage = applyDamage.getCharacter (objectToDamage); applyDamage.sedateCharacter (objectToDamage, transform.position, sedateDelay, useWeakSpotToReduceDelay, sedateUntilReceiveDamage, sedateDuration); if (useActionSystemOnImpact) { playerController currentPlayerController = objectToDamage.GetComponent (); if (currentPlayerController != null) { currentPlayerController.activateCustomAction (actionSystemOnImpactName); } } } } checkProjectilesParent (); } } public void destroyObject () { destroyProjectile (); } public override void resetProjectile () { base.resetProjectile (); } }