• Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
  • Help Room /
avatar image
0
Question by antranic · Dec 18, 2020 at 11:28 AM · c#scripting problembullet

How to shoot bullets depending on the players position???,shooting bullets depending on players x position

im new to coding and unity2D in general and ive been trying to figure this out for a while now. i know there are lots of tutorials on how to shoot bullets, but not with this type of specific script ive wrote. any help would be appreciative! heres my script...

 [SerializeField] float runSpeed = 5f;
 [SerializeField] float jumpSpeed = 5f;
 [SerializeField] float projetileSpeed = 10f;

 [SerializeField] Transform groundCheck;
 [SerializeField] Transform groundCheckL;
 [SerializeField] Transform groundCheckR;

 [SerializeField] GameObject bullet;
 [SerializeField] Transform bulletSpawnPos;

 


 Animator animator;
 Rigidbody2D rb;
 SpriteRenderer spriterenderer;


 bool isGrounded;

   



 // Start is called before the first frame update
 void Start()
 {
     animator = GetComponent<Animator>();
     rb = GetComponent<Rigidbody2D>();
     spriterenderer = GetComponent<SpriteRenderer>();
 }


 private void Update()
 {
     Run();
     FlipSprite();
     Jump();
     Shoot();
 }

 private void FixedUpdate()
 {
     if ((Physics2D.Linecast(transform.position, groundCheck.position, 1 << LayerMask.NameToLayer("Ground"))) ||
         (Physics2D.Linecast(transform.position, groundCheckL.position, 1 << LayerMask.NameToLayer("Ground"))) ||
         (Physics2D.Linecast(transform.position, groundCheckR.position, 1 << LayerMask.NameToLayer("Ground"))))

     {
         isGrounded = true;
     }
     else
     {
         isGrounded = false;
         animator.Play("Jump");
     }
     
 }

 private void Run()
 {
     float controlThrow = CrossPlatformInputManager.GetAxis("Horizontal");
     Vector2 PlayerVelocity = new Vector2(controlThrow * runSpeed, rb.velocity.y);
     rb.velocity = PlayerVelocity;
     bool playerHasHorizontalSpeed = Mathf.Abs(rb.velocity.x) > Mathf.Epsilon;
     if(isGrounded)
         animator.SetBool("Run", playerHasHorizontalSpeed);

  
 }
 
 private void Jump()
 {
     if (CrossPlatformInputManager.GetButtonDown("Jump") && isGrounded)
     {
         Vector2 jumpVelocityToAdd = new Vector2(0, jumpSpeed);
         rb.velocity = rb.velocity + jumpVelocityToAdd;

         if(isGrounded)
             animator.Play("Jump");

     }
   
 }

 private void Shoot()
 {
     if (Input.GetKeyDown(KeyCode.Mouse0)){
         animator.Play("Shoot");

             GameObject BULLET = Instantiate(
             bullet,
             bulletSpawnPos.transform.position,
              Quaternion.identity) as GameObject;

         BULLET.GetComponent<Rigidbody2D>().velocity = new Vector2(projetileSpeed, 0f);
      
       
     }
     
 }

 private void FlipSprite()
 {
     bool playerHasHorizontalSpeed = Mathf.Abs(rb.velocity.x) > Mathf.Epsilon;
     if (playerHasHorizontalSpeed)
     {
         transform.localScale = new Vector2(Mathf.Sign(rb.velocity.x), 1f);
     

     }
  
 }

  

},i recently started learning c# and unity and ive been stuck trying to figure this out :( My player only shoots right when facing right, but still shoots right when facing left. Lots of tutorials out there but not with the specific script ive built.

If anyone can chime in and help it would be appreciative! heres my script!!!

SerializeField] float runSpeed = 5f; [SerializeField] float jumpSpeed = 5f; [SerializeField] float projetileSpeed = 10f;

 [SerializeField] Transform groundCheck;
 [SerializeField] Transform groundCheckL;
 [SerializeField] Transform groundCheckR;

 [SerializeField] GameObject bullet;
 [SerializeField] Transform bulletSpawnPos;

 


 Animator animator;
 Rigidbody2D rb;
 SpriteRenderer spriterenderer;


 bool isGrounded;

   



 // Start is called before the first frame update
 void Start()
 {
     animator = GetComponent<Animator>();
     rb = GetComponent<Rigidbody2D>();
     spriterenderer = GetComponent<SpriteRenderer>();
 }


 private void Update()
 {
     Run();
     FlipSprite();
     Jump();
     Shoot();
 }

 private void FixedUpdate()
 {
     if ((Physics2D.Linecast(transform.position, groundCheck.position, 1 << LayerMask.NameToLayer("Ground"))) ||
         (Physics2D.Linecast(transform.position, groundCheckL.position, 1 << LayerMask.NameToLayer("Ground"))) ||
         (Physics2D.Linecast(transform.position, groundCheckR.position, 1 << LayerMask.NameToLayer("Ground"))))

     {
         isGrounded = true;
     }
     else
     {
         isGrounded = false;
         animator.Play("Jump");
     }
     
 }

 private void Run()
 {
     float controlThrow = CrossPlatformInputManager.GetAxis("Horizontal");
     Vector2 PlayerVelocity = new Vector2(controlThrow * runSpeed, rb.velocity.y);
     rb.velocity = PlayerVelocity;
     bool playerHasHorizontalSpeed = Mathf.Abs(rb.velocity.x) > Mathf.Epsilon;
     if(isGrounded)
         animator.SetBool("Run", playerHasHorizontalSpeed);

  
 }
 
 private void Jump()
 {
     if (CrossPlatformInputManager.GetButtonDown("Jump") && isGrounded)
     {
         Vector2 jumpVelocityToAdd = new Vector2(0, jumpSpeed);
         rb.velocity = rb.velocity + jumpVelocityToAdd;

         if(isGrounded)
             animator.Play("Jump");

     }
   
 }

 private void Shoot()
 {
     if (Input.GetKeyDown(KeyCode.Mouse0)){
         animator.Play("Shoot");

             GameObject BULLET = Instantiate(
             bullet,
             bulletSpawnPos.transform.position,
              Quaternion.identity) as GameObject;

         BULLET.GetComponent<Rigidbody2D>().velocity = new Vector2(projetileSpeed, 0f);
      
       
     }
     
 }

 private void FlipSprite()
 {
     bool playerHasHorizontalSpeed = Mathf.Abs(rb.velocity.x) > Mathf.Epsilon;
     if (playerHasHorizontalSpeed)
     {
         transform.localScale = new Vector2(Mathf.Sign(rb.velocity.x), 1f);
     

     }
  
 }

  

}

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by Soundcracker · Dec 24, 2020 at 01:06 PM

Hey there, The problem is in code line 96:

 BULLET.GetComponent<Rigidbody2D>().velocity = new Vector2(projetileSpeed, 0f);

You are changing the bullet's velocity in x direction without regarding the player's direction. As your projectileSpeed is positive, the bullet will always start to the right. I guess the best solution is to have a variable store the direction you are currently heading, set in your Run() function. According to the Unity manual, changing velocity of an object directly is not recommended, so maybe you would like to switch that to addForce(). You can find an example for launching a projectile in this tutorial, just in case you would like to read into this a little bit further :)

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Welcome to Unity Answers

The best place to ask and answer questions about development with Unity.

To help users navigate the site we have posted a site navigation guide.

If you are a new user to Unity Answers, check out our FAQ for more information.

Make sure to check out our Knowledge Base for commonly asked Unity questions.

If you are a moderator, see our Moderator Guidelines page.

We are making improvements to UA, see the list of changes.



Follow this Question

Answers Answers and Comments

746 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Score counter not working properly. 1 Answer

NEED HELP PLEASE! Unexpected symbol. 0 Answers

The bullet never destroyed!!! 2 Answers

How to use RenderStaticPreview OR get project viewer thumbnails for ScriptableObject assets? 2 Answers

Check the PC architecture? 0 Answers

  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges