public override void UpdateWeapon(PlayerWeapon playerWeapon, FireCallback fireCallback, FireCallback finishedFireCallback) { if (InputManager.Instance.IsShoot) { Fire(playerWeapon, fireCallback, finishedFireCallback); } }
protected void Fire(PlayerWeapon playerWeapon, FireCallback fireCallback, FireCallback finishedFireCallback) { // Check whether the animation is playing. if (playerWeapon.GetAnimator.IsPlaying(k_FireState) == false) { fireCallback(); bool isHit = false; RaycastHit hit; isHit = Physics.Raycast(playerWeapon.gameObject.transform.position, playerWeapon.gameObject.transform.forward, out hit, m_MaxDistance, 1 << LayerMask.NameToLayer("Enemy")); // Trigger the fire animation. playerWeapon.GetAnimator.SetTrigger(playerWeapon, k_FireTrigger, new string[] { k_FireState }, delegate { if (isHit) { //Debug.Log("Hit: " + hit.collider.gameObject); int hitChance = DetermineHit(hit); int baseDamage = CalculateDamage(hit, hitChance); Debug.Log("Hit: " + hit.collider.gameObject + " Damage: " + baseDamage); hit.collider.gameObject.GetRequiredComponent <CharacterHealth>().AdjustHealth(-baseDamage); } // Notify the player the weapon has finished firing. finishedFireCallback(); } ); } }
public bool SetFireCallback(string controlName, FireCallback callback) { foreach (ControlAssignment control in m_controlAssignments) { if (control.Name == controlName) { control.FireCallback = callback; return(true); } } return(false); }
public abstract void UpdateWeapon(PlayerWeapon playerWeapon, FireCallback fireCallback, FireCallback finishedFireCallback);
public void SetFireCallback(FireCallback callback) { fireCallbackList.Add(callback); } //not in used atm