Наследование: MonoBehaviour
Пример #1
0
    /// <summary>
    /// Replaces the old Weapon animator with a new one.
    /// </summary>
    /// <param name="oldAnimator">The old animator.</param>
    /// <param name="newWeapon">The new weapon.</param>
    /// <returns>A reference to the new weapon animator.</returns>
    public static WeaponAnimator Replace(WeaponAnimator oldAnimator, Weapon newWeapon)
    {
        GameObject         gObj = oldAnimator.gameObject;
        WeaponAnimatorType weaponAnimatorType = newWeapon ? newWeapon.WeaponAnimatorType : WeaponAnimatorType.Null;

        Destroy(oldAnimator);
        WeaponAnimator newAnimator;

        switch (weaponAnimatorType)
        {
        case WeaponAnimatorType.SingleHand:
            newAnimator = gObj.AddComponent <SingleHandWeaponAnimator>();
            break;

        case WeaponAnimatorType.TwoHand:
            newAnimator = gObj.AddComponent <TwoHandWeaponAnimator>();
            break;

        case WeaponAnimatorType.Null:
            newAnimator = gObj.AddComponent <NullWeaponAnimator>();
            newAnimator.Animator.runtimeAnimatorController = null;
            return(newAnimator);

        default:
            throw new System.Exception("WeaponAnimatorType " + weaponAnimatorType + " not implemented!");
        }

        newAnimator.Animator.runtimeAnimatorController = newWeapon.Animator;

        return(newAnimator);
    }
Пример #2
0
    private void FireUsingKeyboard()
    {
        if (Input.GetKeyUp(InputManager.Instance.Fire))
        {
            if (_holdData.HoldingDownTrigger)
            {
                PrepareHoldShot();
            }
            else if (Time.time > _timeTillShotAllowed)
            {
                PrepareSingleShot();
            }
            FireShot();
            ResetData();
        }
        else if (_holdData.HoldingDownTrigger)
        {
            WeaponAnimator.SetBool("HoldCharge", true);
        }

        // Determine if we should queue a hold fire shot
        if (Input.GetKeyDown(InputManager.Instance.Fire) && !_holdData.HoldingDownTrigger)
        {
            _holdData.HoldingQueued = true;
            // Wait 1/10th of a second to set the holding
            Invoke("InvokeHolding", 0.25f);
        }
    }
Пример #3
0
    private void Update()
    {
        Damage = UltMode ? _ultModeDamage : _defaultDamage;

        var rightTrigger = Input.GetAxis(Player.JoystickId + GameConstants.Input_RTrigger);

        if (!_triggerLetGo)
        {
            if (rightTrigger <= WeaponConfig.TriggerFireThreshold && !Input.GetKey(InputManager.Instance.Fire))
            {
                _triggerLetGo = true;
            }
        }

        // Degub only rendering the raycasts to see them in action
        for (var i = 1; i < _debugBlastRotations.Length; ++i)
        {
            Debug.DrawRay(_debugBlastRotations[0], _debugBlastRotations[i] * ShotgunConfig.RayLength, Color.green);
        }

        HandleShootingInput(rightTrigger);

        if (HasAmmo)
        {
            CheckAmmo();
        }
        WeaponAnimator.SetBool("UltModeActive", UltMode);
    }
Пример #4
0
    private void Update()
    {
        if (HasAmmo)
        {
            CheckAmmo();
        }

        WeaponAnimator.SetBool("UltMode", UltMode);

        ResolveLaserType();

        var fireButton = Input.GetAxis(Player.JoystickId + GameConstants.Input_RTrigger);

        if (Input.GetKeyDown(InputManager.Instance.Fire) || fireButton > WeaponConfig.TriggerFireThreshold || _holdingDownFire)
        {
            PrepareLaser();
            GenerateLaser();
        }
        if (Input.GetKeyUp(InputManager.Instance.Fire) || (JoystickManagerController.Instance.ConnectedControllers() > 0 && fireButton == 0))
        {
            _holdingDownFire      = false;
            _currentLaser.enabled = false;
            _laserSoundPlaying    = false;
            AudioManager.Instance.StopSound(GameConstants.Audio_EmissionIndexShot);
        }
    }
Пример #5
0
 /// <summary>
 /// Fire an awesome charged up bullet that explodes on impact or after it reaches its max lifetime
 /// </summary>
 private void PrepareHoldShot()
 {
     CancelInvoke("InvokeHolding");
     WeaponAnimator.SetBool("HoldCharge", false);
     _chargeShotFired = true;
     BulletPrefab     = BulletPrefabs[(int)BulletType.CHARGED];
     AudioManager.Instance.PlaySound(GameConstants.Audio_GaussShotCharged);
 }
Пример #6
0
    public static UnitAnimation MakeUnitAnimations(GameObject unit_mesh, WeaponMesh weapon, int index, AnimationCallbackCaster callbacks, GetBool b)
    {
        WeaponAnimator animator_right     = new WeaponAnimator(weapon.AttachmentRight, weapon.FX_Right, weapon.MuzzleRight);
        WeaponAnimator animator_left      = new WeaponAnimator(weapon.AttachmentLeft, weapon.FX_Left, weapon.MuzzleLeft);
        Animator       unit_animator      = unit_mesh.GetComponent <Animator>();
        UnitAnimation_IdleController idle = unit_mesh.GetComponent <UnitAnimation_IdleController>();

        return(new UnitAnimation().Init(unit_animator, animator_right, animator_left, index, callbacks, idle.GetId, b));
    }
Пример #7
0
 private void Update()
 {
     HandleShootingInput();
     if (HasAmmo)
     {
         CheckAmmo();
     }
     WeaponAnimator.SetBool("UltModeActive", UltMode);
 }
Пример #8
0
    // Update is called once per frame
    void Update()
    {
        CamAnimator.SetBool("Running", Input.GetKey(KeyCode.W));
        WeaponAnimator.SetBool("Fire", Input.GetKey(KeyCode.Space));

        if (Input.GetKey(KeyCode.W))
        {
            transform.position = transform.position + transform.forward * moveSpeed * Time.deltaTime;
        }
    }
 private void Update()
 {
     if (DestinyEngineController.ExamplePlayer.IsPlayerWalking() | DestinyEngineController.ExamplePlayer.IsPlayerSprinting())
     {
         WeaponAnimator.SetFloat("Moving", 1f);
     }
     else
     {
         WeaponAnimator.SetFloat("Moving", 0f);
     }
 }
Пример #10
0
 /// <summary>
 /// Plays all the visual overhead of equipping (animation, sounds)
 /// </summary>
 public virtual void Equip()
 {
     if (animator == null)
     {
         animator = GetComponent <WeaponAnimator>();
     }
     reloading = false;
     animator.SetAnimationId();
     animator.PlayEquipAnimation();
     SoundSystem.PlaySound2D(equipSound.name);
 }
Пример #11
0
 private void Start()
 {
     if (typeWeapon == WeaponType.Gun)
     {
         _triggerWithPlayer.triggerGun += ChangeAmmo;
     }
     if (typeWeapon == WeaponType.Rifle)
     {
         _triggerWithPlayer.triggerRifle += ChangeAmmo;
     }
     _weaponAnimator = GetComponent <WeaponAnimator>();
 }
        public override void Fire()
        {
            if (DestinyEngineController.main.IsGamePaused)
            {
                return;
            }

            if (doFire == false)
            {
                return;
            }
            if (isSprinting)
            {
                return;
            }
            if (Is_Reloading)
            {
                return;
            }
            if (Is_Cooldown)
            {
                return;
            }
            else if (MagazineCurrent <= 0)
            {
                WeaponAnimator.SetBool("Fire", false);

                if (noAmmoSource != null)
                {
                    if (noAmmoSource.isPlaying == false)
                    {
                        noAmmoSource.Play();
                    }
                }
                return;
            }

            internalCooldownTimer = cooldownFire;
            Is_Cooldown           = true;
            if (MagazineCurrent > 0)
            {
                MagazineCurrent -= 1;
            }

            WeaponAnimator.SetBool("Fire", true);
            gunFireSource.Play();

            SaveFlag();
            Impact();
            Recoil();
        }
Пример #13
0
    private void Update()
    {
        WeaponAnimator.SetBool("FireUlt", UltMode);

        if (UltMode)
        {
            HandleUltShootingInput();
        }
        else
        {
            ResolveShootingInput();
        }
        if (HasAmmo)
        {
            CheckAmmo();
        }
    }
Пример #14
0
    public UnitAnimation Init(Animator unit, WeaponAnimator right, WeaponAnimator left, float index, AnimationCallbackCaster callback, GetInt get_id, GetBool rs)
    {
        GetIdle              = get_id;
        GetRage              = rs;
        WeaponAnimator_Left  = left;
        WeaponAnimator_Right = right;
        unit_animator        = unit;

        SetWeaponIndex(index);

        //No multicast so we dont need to remove listeners
        callback.OnAbilityTrigger = AbilityCallback;
        callback.OnWeaponHide     = WeaponHide;
        callback.OnWeaponShow     = WeaponShow;

        return(this);
    }
Пример #15
0
    void Start()
    {
        player = GameObject.Find("Player");

        agent          = GetComponent <NavMeshAgent>();
        nextTarget     = transform.position;
        eye            = transform.Find("Eye").gameObject;
        statusLight    = GetComponentInChildren <Light>();
        animator       = GetComponent <Animator>();
        targetRotation = transform.rotation;
        weaponAnimator = GetComponentInChildren <WeaponAnimator>();

        health = GetComponent <Health>();
        health.NotifiyOnZeroHealth += NotifyDeath;
        respawnPositions            = GameObject.FindGameObjectsWithTag("Respawn").ToList();
        Respawn();
    }
 public override void Reload()
 {
     if (MagazineCurrent >= MagazineCapacity)
     {
         return;
     }
     else if (ItemDataAmmo != null)
     {
         if (ItemDataAmmo.count == 0)
         {
             return;
         }
     }
     else if (ItemDataAmmo == null)
     {
     }
     Is_Reloading = true;
     WeaponAnimator.SetTrigger("Reload");
 }
Пример #17
0
 public override void ExecuteAttack()
 {
     if (timeSinceAttack < 0)
     {
         //Set animation trigger
         WeaponAnimator.SetTrigger(Constants.ENEMY_FIRE_BOW);
         RangedWeapon weap = (RangedWeapon)weapon;
         //Instantiate projectile
         GameObject projectile = Instantiate(weap.projectile, transform.parent);
         projectile.transform.position = attackPos.position;
         Arrow   arrowC   = projectile.GetComponent <Arrow>();
         Vector2 heading  = PlayerManager.instance.transform.position - attackPos.position;
         float   distance = heading.magnitude;
         arrowC.direction = heading / distance;
         arrowC.weapon    = weap;
         arrowC.shooter   = gameObject;
         arrowC.damage    = (int)(weapon.damage * enemy.damageModifier);
         timeSinceAttack  = weapon.delay * enemy.attackSpeedModifier;
     }
 }
Пример #18
0
    // Use this for initialization
    virtual public void Start()
    {
        //get player inventory for ammo quantity
        inventory      = GetComponentInParent <Inventory>();
        anim           = GetComponent <WeaponAnimator>();
        crosshairImage = transform.root.Find("PlayerUI/Crosshair").gameObject.GetComponent <Image>();
        cam            = GetComponentInParent <Camera>();
        controller     = GetComponentInParent <FPSController>();

        if (GetComponent <VirtualAudioSource>())
        {
            sound = GetComponent <VirtualAudioSource>();
        }
        else
        {
            Debug.Log("This gun has no sound attached");
        }

        controller.speed -= weight;
    }
Пример #19
0
    public override void ExecuteAttack()
    {
        if (timeSinceAttack <= 0)
        {
            WeaponAnimator.SetTrigger("Attack");

            //Delay hitscan by .5 seconds
            StartCoroutine(Util.ExecuteAfterTime(0.2f, () =>
            {
                //Collect things to hit on layer
                Collider2D[] charactersToDamage = Physics2D.OverlapCircleAll(attackPos.position, weapon.range * enemy.sizeModifier, layer);

                for (int i = 0; i < charactersToDamage.Length; i++)
                {
                    charactersToDamage[i].GetComponent <HitManager>().TakeDamage(weapon.damage, attackPos.position, weapon.knockback, false);
                }
            }));

            timeSinceAttack = weapon.delay * enemy.attackSpeedModifier;
        }
    }
        private void Update()
        {
            if (DestinyEngineController.ExamplePlayer.IsPlayerWalking())
            {
                WeaponAnimator.SetFloat("Moving", 1f);
            }
            else
            {
                WeaponAnimator.SetFloat("Moving", 0f);
            }

            if (DestinyEngineController.ExamplePlayer.IsPlayerSprinting())
            {
                isSprinting = true;
            }
            else
            {
                isSprinting = false;
            }

            if (isSprinting)
            {
                WeaponAnimator.SetBool("isSprinting", true);
            }
            else
            {
                WeaponAnimator.SetBool("isSprinting", false);
            }

            if (Is_Cooldown)
            {
                internalCooldownTimer -= 1 * Time.deltaTime;

                if (internalCooldownTimer < 0)
                {
                    Is_Cooldown = false;
                }
            }
        }
        public override void FireUp()
        {
            if (DestinyEngineController.main.IsGamePaused)
            {
                return;
            }

            if (Is_Cooldown | MagazineCurrent <= 0 | Is_Reloading)
            {
                return;
            }

            Is_Cooldown = true;
            if (MagazineCurrent > 0)
            {
                MagazineCurrent -= 1;
            }

            WeaponAnimator.SetTrigger("Fire");

            SaveFlag();
            Impact();
            Recoil();
        }
Пример #22
0
    private void FireUsingController()
    {
        var rightTrigger = Input.GetAxis(Player.JoystickId + GameConstants.Input_RTrigger);

        if (_holdData.HoldingDownTrigger && (rightTrigger == 0))
        {
            PrepareHoldShot();
            FireShot();
            ResetData();
        }
        else if (_holdData.HoldingDownTrigger)
        {
            WeaponAnimator.SetBool("HoldCharge", true);
        }
        else if (rightTrigger > WeaponConfig.TriggerFireThreshold)
        {
            _holdData.TriggerPressed = true;
        }
        else
        {
            if (_holdData.TriggerPressed && Time.time > _timeTillShotAllowed)
            {
                PrepareSingleShot();
                FireShot();
            }
            ResetData();
        }

        // Determine if we should queue a hold fire shot
        if (_holdData.TriggerPressed && !_holdData.HoldingDownTrigger && !_holdData.HoldingQueued)
        {
            _holdData.HoldingQueued = true;
            // Wait 1/10th of a second to set the holding
            Invoke("InvokeHolding", 0.25f);
        }
    }
Пример #23
0
 public void OnWeaponChanged(Weapon newWeapon)
 {
     WeaponAnimator = WeaponAnimator.Replace(WeaponAnimator, newWeapon);
 }
Пример #24
0
 public void Decolorize(WeaponAnimator weapon)
 {
     _playerWeaponSpriteRenderer       = weapon.GetComponent <SpriteRenderer>();
     _playerWeaponSpriteRenderer.color = Color.white;
 }
Пример #25
0
 // Start is called before the first frame update
 void Start()
 {
     lastFire = Time.time;
     Player   = GameObject.Find("Player").GetComponent <PlayerController>();
     animator = GetComponent <WeaponAnimator>();
 }
Пример #26
0
    // Use this for initialization
    protected virtual void Start()
    {
        arrow = transform.GetChild(0).gameObject;
        animatingWeapon = true;
        bow = transform.parent.GetComponentInChildren<WeaponAnimator>();
        // set animation variables
        if (arrow != null)
        {
          Material hold = arrow.GetComponent<Renderer>().material;
          plCol= GameObject.FindGameObjectWithTag("Manager").GetComponent<GameManager>().pColor[GetComponentInParent<PlayerController>().playerNumber];

          // set the collider circle's color
          plCol.a = hold.GetColor("_Color").a;
          originalAlpha = plCol.a;
          hold.SetColor("_Color", plCol);

          // set up the start spacing
          startScale = arrow.transform.localScale / 10.0f;
          startArrowSpacing = arrowSpacing;
          endArrowSpacing = 0;
          maxScale = arrow.transform.localScale * scaleMag;

          if (transform.childCount > 1)
          {
        line = transform.GetChild(1).gameObject;
        // set the line color
        hold = line.GetComponent<LineRenderer>().material;
        hold.SetColor("_Color", plCol);
          }
        }

        plCont = GetComponentInParent<PlayerController>();
        prevInputs = new ArrayList();

        for (int i = 0; i < maxPrevInputs; i++)
          prevInputs.Add(0.0f);

        // set wwise gameobject data
        AkSoundEngine.PostEvent("Set_Switch_Arrow", plCont.gameObject);
    }
Пример #27
0
 protected override void ApplyRecoil()
 {
     WeaponAnimator.SetBool("ApplyRecoil", true);
     StartCoroutine(ResetWeaponPosition());
     AudioManager.PlaySound(GameConstants.Audio_FuzzBuster);
 }
Пример #28
0
 void Start()
 {
     instance = this;
 }
Пример #29
0
 protected virtual void Start()
 {
     currentMag = magSize;
     animator   = GetComponent <WeaponAnimator>();
 }
Пример #30
0
 private void Awake()
 {
     WeaponAnimator = GetComponentInChildren <WeaponAnimator>(); // TODO: <-- maybe change this
 }
 public override void Inaction()
 {
     WeaponAnimator.SetBool("Fire", false);
 }
Пример #32
0
 protected override void ApplyRecoil()
 {
     WeaponAnimator.SetBool("ApplyRecoil", true);
     StartCoroutine(ResetWeaponPosition());
 }