private IEnumerator Firing()
    {
        float fireDelay = 0.15f; //todo field

        foreach (Transform target in m_lockOns)
        {
            var homingMissile = m_missilePool.GetFromPool().GetComponent <HomingMissile>();
            homingMissile.TargetLock = target;
            m_lockOnIcons[target].MissileLaunched = true;
            m_lockOnIcons[target].Missile         = homingMissile;

            Vector2 randomSpawnDirection = Random.insideUnitCircle.normalized;
            randomSpawnDirection             = new Vector2(randomSpawnDirection.x, Mathf.Abs(randomSpawnDirection.y));
            homingMissile.transform.position = transform.position + (Vector3)randomSpawnDirection * 0.5f;

            homingMissile.Body.AddForce(randomSpawnDirection * LaunchImpulse, ForceMode2D.Impulse);

            homingMissile.transform.rotation = Quaternion.LookRotation(
                Vector3.back, target.position - homingMissile.transform.position);
            homingMissile.StartChase();

            yield return(new WaitForSeconds(fireDelay));
        }
        m_lockOns.Clear();
        m_lockOnIcons.Clear();
        m_weaponState = EWeaponState.neutral;
    }
Ejemplo n.º 2
0
        // Override this to launch a projetile and/or swing a weapon
        protected virtual void OnFire(EWeaponState prevState)
        {
            if (prevState != EWeaponState.FIRING)
            {
                BaseEvents.OnFireStarted.Invoke();
            }

            BaseEvents.OnFire.Invoke();
        }
Ejemplo n.º 3
0
        protected override void OnFire(EWeaponState prevState)
        {
            base.OnFire(prevState);

            Transform shootTransform = MuzzleTransform;

            // Fire a ray cast from the player camera
            if (weaponOwner.CompareTag("Player"))
            {
                LNBPlayerCharacter playerOwner = weaponOwner.GetComponent <LNBPlayerCharacter>();
                Transform          eyeTran     = playerOwner.GetEyeTransform();

                // Fire ray
                int        layerMask = 1 << LayerMask.GetMask("AimRay");
                RaycastHit rayHit;
                Vector3    aimDir;
                Ray        aimRay = new Ray();
                aimRay.direction = eyeTran.forward;
                aimRay.origin    = eyeTran.position;

                // If hit something
                if (Physics.Raycast(aimRay, out rayHit, MaxDistance, layerMask))
                {
                    aimDir = rayHit.point - shootTransform.position;
                }
                else
                {
                    aimDir          = aimRay.direction * MaxDistance;
                    rayHit.distance = MaxDistance;
                }

                shootTransform.rotation = Quaternion.LookRotation(aimDir);

                                #if DD_DEBUG
                // Aim trace
                DebugExtension.DebugArrow(aimRay.origin, aimRay.direction * rayHit.distance, Color.red, 1.0f);
                //Aim Direction
                DebugExtension.DebugArrow(shootTransform.position, aimDir, Color.green, 1.0f);
                                #endif
            }

            // Spawn our projectile
            GameObject newProjObj = projectilePool.GetNextFree();
            if (newProjObj)
            {
                newProjObj.SetActive(true);
                Projectile newProjectile = newProjObj.GetComponent <Projectile>();

                if (!newProjectile)
                {
                    Debug.Log("Instantiated something that's not a projectile! Add it in your prefab!");
                    return;
                }

                newProjectile.Launch(this, weaponOwner, MuzzleTransform);
            }
        }
 public void PullTrigger()
 {
     if (m_weaponState == EWeaponState.neutral)
     {
         m_weaponState = EWeaponState.locking;
         m_lineRenderer.widthMultiplier = 0.15f;
         m_lockingCoroutine             = StartCoroutine(Locking());
     }
 }
 public void ReleaseTrigger()
 {
     if (m_weaponState == EWeaponState.locking)
     {
         m_weaponState = EWeaponState.firing;
         m_lineRenderer.widthMultiplier = 0.0f;
         if (m_lockingCoroutine != null)
         {
             StopCoroutine(m_lockingCoroutine);
         }
         StartCoroutine(Firing());
     }
 }
Ejemplo n.º 6
0
    void SetWeaponState()
    {
        weaponState = EWeaponState.IDLE;

        if (inputController.fire1)
        {
            weaponState = EWeaponState.FIRING;
        }

        //if (inputController.fire2)
        // weaponState = EWeaponState.AIMING;

        // if (inputController.fire1 && inputController.fire2)
        // weaponState = EWeaponState.AIMEDFIRING;
    }
Ejemplo n.º 7
0
 void SetWeaponState()
 {
     WeaponState = EWeaponState.IDLE;
     if (InputController.Fire1)
     {
         WeaponState = EWeaponState.FIRING;
     }
     if (InputController.IsAiming)
     {
         WeaponState = EWeaponState.AIMING;
     }
     if (InputController.Fire1 && InputController.IsAiming)
     {
         WeaponState = EWeaponState.AIMEDFIRING;
     }
 }
Ejemplo n.º 8
0
 void SetWeaponState()
 {
     WeaponState = EWeaponState.Idle;
     if (InputController.Fire1)
     {
         WeaponState = EWeaponState.Firing;
         if (InputController.Fire2)
         {
             WeaponState = EWeaponState.AimingAndFiring;
             return;
         }
     }
     if (InputController.Fire2)
     {
         WeaponState = EWeaponState.Aiming;
     }
 }
Ejemplo n.º 9
0
    private void SetWeaponState()
    {
        WeaponState = EWeaponState.Idle;

        if (InputController.Mouse1)
        {
            WeaponState = EWeaponState.Firing;
        }
        if (InputController.Mouse2)
        {
            WeaponState = EWeaponState.Aiming;
        }
        if (InputController.Mouse1 && InputController.Mouse2)
        {
            WeaponState = EWeaponState.AimedFiring;
        }
    }
Ejemplo n.º 10
0
    void setWeaponState()
    {
        WeaponState = EWeaponState.IDLE;

        if (InputController.fire1)
        {
            WeaponState = EWeaponState.FIRING;
        }

        if (InputController.fire2)
        {
            WeaponState = EWeaponState.AIMING;
        }

        if (InputController.fire1 && InputController.fire2)
        {
            WeaponState = EWeaponState.AIMEDFIRING;
        }
    }
Ejemplo n.º 11
0
    void SetWeaponState()
    {
        WeaponState = EWeaponState.IDEL;

        if (InputControllers.Fire1)
        {
            WeaponState = EWeaponState.FIRING;
        }

        if (InputControllers.Fire2)
        {
            WeaponState = EWeaponState.AIMING;
        }

        if (InputControllers.Fire1 && InputControllers.Fire2)
        {
            WeaponState = EWeaponState.AIMINGFIREING;
        }
    }
Ejemplo n.º 12
0
    void SetWeaponState()
    {
        WeaponState = EWeaponState.IDLE;

        if (InputController.Fire1)
        {
            WeaponState = EWeaponState.FIRING;
        }

        if (InputController.Fire2)
        {
            WeaponState = EWeaponState.AIMING;
        }

        if (InputController.Fire1 && InputController.Fire2)
        {
            WeaponState = EWeaponState.AIMEDFIRING;
        }

        if (InputController.Reload)
        {
            WeaponState = EWeaponState.RELOADING;
        }
    }
Ejemplo n.º 13
0
 protected virtual void OnFireEnd(EWeaponState nextState)
 {
     BaseEvents.OnFireFinished.Invoke();
 }
Ejemplo n.º 14
0
 void SetWeaponState(EWeaponState weaponState)
 {
     WeaponState = weaponState;
 }
Ejemplo n.º 15
0
 void SetWeaponState()
 {
     WeaponState = EWeaponState.IDLE;
 }