• 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 /
avatar image
0
Question by yaminShihab · Feb 25, 2021 at 04:49 PM · 2dunity 2dtopdowntop down shootertop-down

2D Top Down Shooting Problem

I'm pretty new to unity so I don't know if the answer is obvious. So I'm working on a top-down shooter where the player is an airplane, and I was trying to make the airplane shoot a laser by making the laser always be to the right of this ship and always turn to where the mouse is and if I left click, a method uses rb.AddForce to make it shoot and then it goes back to where it was in the beginning (to the right of the ship). But when I try it out, the laser does shoot in the direction of my mouse but when it goes back to where it was in the beginning, it starts shaking for like 30 seconds before it goes back to normal.

The script attached to the laser:

 using UnityEngine;
 
 public class Shooting : MonoBehaviour {
 
     [SerializeField] Transform shipPos;
     [SerializeField] GameObject laserPrefab;
     [SerializeField] Rigidbody2D rb;
     float angle;
     Vector3 laserPos;
     Vector2 worldMousePos;
     GameObject laser;
     [SerializeField] float laserForce;
 
     // Start is called before the first frame update
     void Start() {
         laserPos.Set(-0.15f, shipPos.position.y, 0.3f);
     }
 
     // Update is called once per frame
     void Update() {
         laserPos.Set(-0.15f, shipPos.position.y, 0.3f);
         rb.position = laserPos;
 
         worldMousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
         Vector2 lookDir = worldMousePos - rb.position;
         angle = Mathf.Atan2(lookDir.y, lookDir.x) * Mathf.Rad2Deg - 90f;
         rb.rotation = angle;
 
         if (Input.GetButtonDown("Fire1")) {
             Shoot();
         }
     }
 
     void Shoot() {
         rb.AddForce(transform.up * laserForce, ForceMode2D.Impulse);
         rb.position = laserPos;
     }
 }
 

The unity editor (the laser selected): alt text

screenshot-2021-02-25-114658.png (500.2 kB)
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
1
Best Answer

Answer by Thorgaddon · Feb 25, 2021 at 05:20 PM

Make an Empty Object at laserPrefab spawning point, as a LaserSpawner. Let is spawns laser shots by this:

void Update() {

 // some code...

 if (Input.GetButtonDown("Fire1"))
 {
     Instantiate(laserPrefab, LaserSpawner.position, Quaternion.identity)
      }

}

and then change Sooting class

public class Shooting : MonoBehaviour { private float laserSpeed;

 // Update is called once per frame
 void Update()
 {
     transform.Translate(Vector2.right * laserSpeed * Time.deltaTime);
     //+ implement screen border check       
 }

}

Comment
Add comment · Show 1 · 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
avatar image yaminShihab · Feb 25, 2021 at 11:51 PM 0
Share

Thanks, it worked and really helped.

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.

Follow this Question

Answers Answers and Comments

276 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

Related Questions

Simple top-down 2D collision 2 Answers

Lines are disappearing and merging as I zoom out 2 Answers

Top Down 2D Network Transform 0 Answers

8-directional orientation, top down 2D, seperate from movement 0 Answers

How to have camera follow player unless it hits a boundary 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges