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(); }
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)); }