Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • 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 madruytb · Oct 08, 2018 at 11:17 PM · c#2d

rigidbody velocity = vector2 zero not working ?

Hello, Im making a 2D soccer game and when one of the players score a goal, the players go back to the starting position and one random ball is instantiated in the center of the field, just like it happens in soccer.
The problem is, when the players teleport, they keep the momentum they had before teleporting, and I tried adding ( pBody.velocity = Vector2.zero; ) along the other teleporting instructions, and AFAIK it should do exactly that, stop all movement from the rigidbody, but thats not happening, Script:

 public class MatchManager : MonoBehaviour {
 
     public GameObject[] balls;
     public GameObject player1;
     public GameObject player2;
     GameObject ball;
 
     Rigidbody2D pBody1;
     Rigidbody2D pBody2;
 
     Vector2 ballPos;
     Vector2 player1Pos;
     Vector2 player2Pos;
 
     // Use this for initialization
     void Start () {
         ballPos = new Vector2(0, 6);
         player1Pos = new Vector2(4.2f, 2.35f);
         player2Pos = new Vector2(-4.2f, 2.35f);
         StartRound();
 
         pBody1 = player1.GetComponent<Rigidbody2D>();
         pBody2 = player2.GetComponent<Rigidbody2D>();
     }
     
     // Update is called once per frame
     void Update () {
         ball = GameObject.FindGameObjectWithTag("Ball");
     }
     public void StartRound () {
         if (ball !=null) {
             Destroy(ball);
         }
 
         Instantiate(balls[Random.Range(0, balls.Length)], ballPos, transform.rotation);
         player1.transform.position = player1Pos;
         player1.transform.rotation = Quaternion.identity;
         pBody1.velocity = Vector2.zero;
         pBody1.angularVelocity = 0;
 
         player2.transform.position = player2Pos;
         player2.transform.rotation = Quaternion.identity;
         pBody2.velocity = Vector2.zero;
         pBody2.angularVelocity = 0;
     }
 
 }

Also I already tried to do the same with a single private rigidbody, same result.
Im pretty new to unity and I might be missing something here,
Thanks in advance!

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 Owen-Reynolds · Oct 21, 2018 at 03:33 PM 0
Share

The idea is fine. Assigning all 0's to velocity stops you. Sometimes you also need to assign 0 to the angular velocity, to stop it from spinning. If you're still worried, try a small test -- make a ball that falls, with pressing a key zero-ing out velocity.

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by UnityCoach · Oct 09, 2018 at 02:05 AM

You need to assign pBody1 and pBody2 before calling them.

Simply move your StartRound () method call after their assignment.

Comment
Add comment · Show 4 · 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 madruytb · Oct 09, 2018 at 10:01 PM 0
Share

Thank you! I totally forgot about that, but I tried it and unless I messed up the assignment, It still doesnt work for unknown reason, heres what I changed:

 void Start () {
         ballPos = new Vector2(0, 6);
         player1Pos = new Vector2(4.2f, 2.35f);
         player2Pos = new Vector2(-4.2f, 2.35f);
 
         pBody1 = player1.GetComponent<Rigidbody2D>();
         pBody2 = player2.GetComponent<Rigidbody2D>();
 
         StartRound();
     }

Still the same issue :(

avatar image UnityCoach madruytb · Oct 09, 2018 at 11:08 PM 0
Share

Here, I did a bit of groo$$anonymous$$g in there.

 public class $$anonymous$$atch$$anonymous$$anager : $$anonymous$$onoBehaviour
 { 
      [SerializeField] GameObject[] balls;
      [SerializeField] Rigidbody2D player1;
      [SerializeField] Rigidbody2D player2;
      GameObject ball;
  
      [SerializeField] Transform ballPos; // assign this in the Editor, much easier to control than with absolute positions in the code
      Vector2 player1Pos; // this will store original player position
      Vector2 player2Pos;
  
      void Start ()
     {
          player1Pos = player1.transform.position; // fetching position from Rigidbody2D's associated transform
          player2Pos = player2.transform.position;
 
          StartRound();
      }
      
      public void StartRound ()
     {
          if (ball !=null)
              Destroy(ball);
  
          ball = (GameObject) Instantiate(balls[Random.Range(0, balls.Length)], ballPos, transform.rotation); // assigning the result, no need to use Find later
 
          player1.position = player1Pos; // changing rigidbody's position ins$$anonymous$$d of transform, may help, or not..
          player1.rotation = Quaternion.identity;
          player1.velocity = Vector2.zero;
          player1.angularVelocity = 0;
  
          player2.position = player2Pos;
          player2.rotation = Quaternion.identity;
          player2.velocity = Vector2.zero;
          player2.angularVelocity = 0;
      }
  }
avatar image madruytb UnityCoach · Oct 15, 2018 at 02:44 PM 0
Share

Hey, sorry for being late, I tried your code and idk why this started happening: https://www.youtube.com/watch?v=tg93SqlAVy$$anonymous$$
As you can see the player characters are kinda repositioning after scoring but quite worse than before.
But i a had the idea of in the start of every round, instantiating a collider in front of the players so it should work as a wall that stops them from leaning forwards when they get teleported, and its working nicely until now.
Thanks for the help, and for tidying up the script for the newbie here :)

Show more comments

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

590 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

Related Questions

Problems with raycasting 2D. Probelmas com raycasting 2D. 0 Answers

How to display text from a text object to another text object? 1 Answer

Is It Bad to be Tired of my Own Mobile Game? 1 Answer

Can't get object to destroy itself on collision. 0 Answers

Player not moving 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