Advertisement
GoodNoodle

Weapon

Jul 1st, 2021
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.94 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5.  
  6. [CreateAssetMenu(fileName = "Weapon", menuName = "Weapon/New Weapon", order = 0)]
  7. public class PlayerWeapon : ScriptableObject
  8. {
  9.     [SerializeField]GameObject weaponPrefab = null;
  10.  
  11.     public AnimatorOverrideController animatorOverride = null;
  12.    
  13.     public float weapDMG = 10f;
  14.  
  15.     public float wepRange = 2f;
  16.  
  17.     public Projectile projectile = null;
  18.  
  19.     const string wepName = "Weapon";
  20.  
  21.     // Update is called once per frame
  22.     void Update()
  23.     {
  24.      
  25.     }
  26.  
  27.     public void Spawn(Transform handTrans, Animator animator)
  28.     {
  29.         DestroyOldWepon(handTrans);
  30.         if(weaponPrefab != null)
  31.         {
  32.            
  33.            GameObject weapon = Instantiate(weaponPrefab, handTrans);
  34.             weapon.name = wepName;
  35.         }
  36.  
  37.         var overrideController = animator.runtimeAnimatorController as AnimatorOverrideController;
  38.         if (animatorOverride != null)
  39.         {
  40.             animator.runtimeAnimatorController = animatorOverride;
  41.         }
  42.         else if (overrideController != null)
  43.         {
  44.          animator.runtimeAnimatorController = overrideController;
  45.          }
  46.       }
  47.    
  48.  
  49.     private void DestroyOldWepon(Transform handTrans)
  50.     {
  51.         Transform oldwep = handTrans.Find(wepName);
  52.  
  53.         if (oldwep == null) return;
  54.  
  55.         oldwep.name = "Destroy";
  56.         Destroy(oldwep.gameObject);
  57.     }
  58.  
  59.     public bool HasProjectile()
  60.     {
  61.         return projectile != null;
  62.     }
  63.  
  64.     public void LaunchProjectile(Transform handTrans, Health target, GameObject instigator, float dmgCalc)
  65.     {
  66.         Projectile projecIns = Instantiate(projectile, handTrans.position, Quaternion.identity);
  67.         projecIns.SetTarget(target,instigator,dmgCalc);
  68.     }
  69.     public float GetDamage()
  70.     {
  71.         return weapDMG;
  72.     }
  73.  
  74.     public float GetRange()
  75.     {
  76.         return wepRange;
  77.     }
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement