コード例 #1
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();
    }
コード例 #2
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));
        }