Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 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 /
avatar image
0
Question by SPIGS · Jun 13, 2015 at 12:56 AM · collisionmovementrigidbody2dplanetfauxgravity

2D Faux Gravity using a Point Effector?

I have a planet, and a player. The planet has a Point Effector and a "surface collider". The player too has its own collider and of course a rigidbody. When the player is suspended above the planet, and the scene is played, the player collides with the planet in the way you would expect. However when I attach my "Player Movement" script to the player, the player no longer collides with the surface collider and it does glitchy spasms inside the planet. Example of what should happen:

alt text

Example of what actually happens:

alt text

The movement script:

 void Update ()
     {
         MoveDir = new Vector3 (Input.GetAxisRaw ("Horizontal"), 0, 0).normalized;
 
     }
     void FixedUpdate ()
     {
         myRigidBody.MovePosition (transform.TransformDirection (MoveDir) * movespeed * Time.deltaTime);
     }


good.png (3.1 kB)
bad.png (3.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
0
Best Answer

Answer by Alec-Slayden · Jun 13, 2015 at 01:29 AM

It looks like you might be using Rigidbody.MovePosition() as though it were similar to Translate(), but this is incorrect.

Rigidbody.MovePosition moves the object directly to that position in space, not along that axis like Translate does. Rigidbody.MovePosition(Vector) is like saying Transform.Position = Vector, except that the rigidbody will calculate collisions for everything between its current position and the destination.

So what it looks like you're doing is actually telling your rigidbody to go very close to Vector3.zero, every frame of fixed update, and also calculate collisions in between. This is probably going to have some glitchy behaviour.

What you may want to do is AddForce for false gravity

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.

Follow this Question

Answers Answers and Comments

22 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

Related Questions

Rigidbody2D doesn't move 0 Answers

How Do I Make a Rigidbody2d keep its force and move at a consistent speed? 2 Answers

Simple moving ball script 1 Answer

2D Character suddenly stops moving for no given reason 1 Answer

How to go about having two seperate Game Objects follow eachother? 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