• 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 EdjofGlory · Apr 09, 2019 at 07:58 AM · collider2d gamephysics2dforce

Game Object is moving towards the left when fire button is pressed.

I'm currently making a Space Invader clone as a practice I used Rigidbody on the ship. The problem that I'm getting is whenever I pressed the fire button the Ship moves towards the left every time it shoots. Choosing Kinematic fixes this, however this ignores the box collider that I placed on to act as a border for the ship.

I know that there are better ways to execute this properly but I'm currently experimenting if there is a way to remove the force.

My question is how can I remove the force being added to the ship?

Code:

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 [RequireComponent(typeof(Rigidbody2D))]
 public class ship_control : MonoBehaviour
 {
     public float moveSpeed;
     private Rigidbody2D ship;
 
     public GameObject shot;
     public Transform shotSpawn;
     public float fireRate;
 
     private float nextFire;
 
     // Start is called before the first frame update
     void Start()
     {
  
         ship = GetComponent<Rigidbody2D>();
         
     }
 
     // Update is called once per frame
     void Update()
     {
         if (Input.GetAxisRaw("Horizontal")>0.5f||Input.GetAxisRaw("Horizontal")<-0.5)
         {
             ship.velocity = new Vector2 (Input.GetAxisRaw("Horizontal") * moveSpeed, ship.velocity.y);
         }
 
         if (Input.GetAxisRaw("Horizontal")<0.5f&&Input.GetAxisRaw("Horizontal")>-0.5)
         {
             ship.velocity = new Vector2(0f, ship.velocity.y);
         }
 
         if (Input.GetButton("Fire1")&&Time.time>nextFire)
         {
            
             nextFire = Time.time + fireRate;
             Instantiate(shot,shotSpawn.position,shotSpawn.rotation);
         }
 
         
 
         
     }
 }
 

Comment
Add comment · Show 1
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 Chris333 · Apr 09, 2019 at 09:07 AM 0
Share

I would advise you to take a look into the 2D shooter tutorial series. It explains exactly how to move, shoot and set boundaries in a proper way. It helped me a lot at the beginning. https://unity3d.com/de/learn/tutorials/projects/space-shooter-tutorial/moving-player?playlist=17147

2 Replies

· Add your reply
  • Sort: 
avatar image
1

Answer by highpockets · Apr 09, 2019 at 08:12 AM

Does your projectile spawn inside the collider of the ship?? Try offsetting the spawn position a bit or scaling down the ship’s collider

Comment
Add comment · Show 2 · 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 EdjofGlory · Apr 09, 2019 at 08:45 AM 0
Share

Yes I tried playing with the collider and it does affect the movement, thank you for that hint. How do I change the spawn position of the bullet lets say above the ship? Currently the bullet is spawning inside the ship or in the same layer the ship it's on.

avatar image highpockets EdjofGlory · Apr 09, 2019 at 09:08 AM 0
Share

I’m assuming that you are shooting in the forward direction of the ship (the local z/blue axis), depending how far away you want it to spawn. You use the transform.forward which is a normalized (1 unit in length) vector and multiply it by the distance away that you want it to spawn and add that to the transform.position.

Or you can place an empty game object at the exact spot that you want to spawn the bullet and make that a child of your ship, then just spawn at the empty game object’s location. I changed my comment to an answer as it appears that was the issue

avatar image
0

Answer by zakkaiokenx10 · Apr 09, 2019 at 09:10 AM

Make sure your not spawning the bullet inside the ship's collider. saying that youre spawning at a spawnshot gameobject's location, move spawnshot out of the collider of the ship

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

155 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

Related Questions

How do I make bullets pass through some game objects? 1 Answer

How do I make a tractor beam affect my player? 2 Answers

Should a physics material be added to the collider or the rigidbody? 2 Answers

Collider lets object through 0 Answers

Why Collider2D.OverlapPoint does not work with CompositeCollider2D? 1 Answer

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