Example #1
0
 protected virtual IEnumerator Strafe(Projectile.ProjectData projectData, int strafeMode)
 {
     if (strafeMode == 0)
     {
         while (m_ShootStrafeTimer < shootStrafeDuration)
         {
             m_ProjectilePool[strafeMode].Pop(projectData);
             m_ShootStrafeTimer += shootStrafeDuration / shootStrafeTimes;
             yield return(new WaitForSeconds(shootStrafeDuration / shootStrafeTimes));
         }
         m_ShootStrafeTimer = 0.0f;
         yield break;
     }
     else
     {
         while (m_LaunchStrafeTimer < launchStrafeDuration)
         {
             launchAudio.PlayRandomSound();
             m_ProjectilePool[strafeMode].Pop(projectData);
             m_LaunchStrafeTimer += launchStrafeDuration / launchStrafeTimes;
             yield return(new WaitForSeconds(launchStrafeDuration / launchStrafeTimes));
         }
         m_LaunchStrafeTimer = 0.0f;
         yield break;
     }
 }
Example #2
0
    public virtual void DoShoot()
    {
        Vector2 shootPosition = shootingOrigin.transform.localPosition;

        RaycastHit2D[]         m_HitBuffer = new RaycastHit2D[1];
        Projectile.ProjectData projectData = new Projectile.ProjectData()
        {
            direction            = m_SpriteForward,
            gravity              = Vector2.zero,
            shootOrigin          = shootingOrigin.position,
            shootSpeed           = launchSpeed,
            destroyWhenOutOfView = destroyWhenOutOfView
        };
        if (track)
        {
            projectData.Track                  = true;
            projectData.direction              = new Vector2(m_SpriteForward.x * Mathf.Cos(Mathf.Deg2Rad * shootAngle), Mathf.Sin(Mathf.Deg2Rad * shootAngle));
            projectData.Target                 = m_Target;
            projectData.trackSensitivity       = trackSensitivity;
            projectData.timeBeforeAutodestruct = trackTime;
        }
        else
        {
            projectData.Track  = false;
            projectData.Target = null;
            if (locate)
            {
                projectData.direction = (Target.transform.position - shootingOrigin.position).normalized;
            }
        }
        ProjectileObject obj = m_ProjectilePool.Pop(projectData);

        shootingAudio.PlayRandomSound();
    }
Example #3
0
    public virtual void DoShoot()
    {
        Vector2 shootPosition = shootingOrigin.transform.localPosition;

        RaycastHit2D[]         m_HitBuffer = new RaycastHit2D[1];
        Projectile.ProjectData projectData = new Projectile.ProjectData()
        {
            direction            = m_SpriteForward,
            gravity              = Vector2.zero,
            shootOrigin          = shootingOrigin.position,
            shootSpeed           = launchSpeed,
            destroyWhenOutOfView = destroyWhenOutOfView,
            //----------//
            timeBeforeAutodestruct = 4f
        };
        //if (track)
        //{
        //    projectData.Track = true;
        //    projectData.direction = new Vector2(m_SpriteForward.x * Mathf.Cos(Mathf.Deg2Rad * shootAngle), Mathf.Sin(Mathf.Deg2Rad * shootAngle));
        //    projectData.Target = target;
        //    projectData.trackSensitivity = trackSensitivity;
        //    projectData.timeBeforeAutodestruct = trackTime;
        //}
        //else
        //{
        projectData.Track  = false;
        projectData.Target = null;
        if (locate)
        {
            projectData.direction = (target.transform.position - shootingOrigin.position).normalized;
        }
        //}
        if (!shootStrafe)
        {
            m_ProjectilePool[0].Pop(projectData);
        }
        else
        {
            StartCoroutine(Strafe(projectData, 0));
        }
        strafeAudio.PlayRandomSound();
    }
Example #4
0
        public void Launch()
        {
            //Vector2 force = m_SpriteForward.x > 0 ? Vector2.right.Rotate(shootAngle) : Vector2.left.Rotate(-shootAngle);

            //force *= shootForce;
            Vector2 shootPosition = shootingOrigin.transform.localPosition;

            //if we are flipped compared to normal, we need to localy flip the shootposition too
            //if ((spriteFaceLeft && m_SpriteForward.x > 0) || (!spriteFaceLeft && m_SpriteForward.x > 0))
            //    shootPosition.x *= -1;

            //BulletObject obj = m_BulletPool.Pop(transform.TransformPoint(shootPosition));
            RaycastHit2D[]         m_HitBuffer = new RaycastHit2D[1];
            Projectile.ProjectData projectData = new Projectile.ProjectData()
            {
                direction   = m_SpriteForward,
                gravity     = Vector2.zero,
                shootOrigin = shootingOrigin.position,
                shootSpeed  = launchSpeed
            };
            if ((Physics2D.Raycast(shootingOrigin.position, m_SpriteForward, m_ContactFilter, m_HitBuffer, viewDistance) > 0 || m_Target == null) && LaunchTracked == false)
            {
                projectData.Track  = false;
                projectData.Target = null;
            }
            else
            {
                projectData.Track            = true;
                projectData.direction        = new Vector2(m_SpriteForward.x * Mathf.Cos(Mathf.Deg2Rad * launchAngle), Mathf.Sin(Mathf.Deg2Rad * launchAngle));
                projectData.Target           = m_Target;
                projectData.trackSensitivity = trackSensitivity;
            }
            ProjectileObject obj = m_ProjectilePool.Pop(projectData);

            LaunchAudio.PlayRandomSound();
            //obj.rigidbody2D.velocity = (GetProjectilVelocity(m_TargetShootPosition, shootingOrigin.transform.position));
        }
Example #5
0
    public override void DoShoot()
    {
        Vector2 shootPosition = shootingOrigin.transform.localPosition;

        RaycastHit2D[]           m_HitBuffer = new RaycastHit2D[1];
        Projectile.ProjectData[] projectData = new Projectile.ProjectData[bulletNum];
        Vector2 vector = m_SpriteForward;

        for (int i = 0; i < projectData.Length; i++)
        {
            projectData[i] = new Projectile.ProjectData
            {
                direction   = projectData.Length > 1 ? vector.Rotate(RangeAngle * 0.5f).Rotate(-i * RangeAngle / (bulletNum - 1)) : m_SpriteForward,
                gravity     = Vector2.zero,
                shootOrigin = shootingOrigin.transform.position,
                shootSpeed  = launchSpeed
            };
            if (track)
            {
                projectData[i].Track            = true;
                projectData[i].Target           = m_Target;
                projectData[i].trackSensitivity = trackSensitivity;
            }
            else
            {
                projectData[i].Track  = false;
                projectData[i].Target = null;
                if (locate)
                {
                    projectData[i].direction = (Target.transform.position - shootingOrigin.position).normalized;
                }
            }
            ProjectileObject obj = m_ProjectilePool.Pop(projectData[i]);
        }
        shootingAudio.PlayRandomSound();
    }