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 /
avatar image
0
Question by J0K3R_12QQ · Jan 17, 2018 at 07:21 PM · collisionrigidbodyplayerplayer movement

Player falling through the floor

I have started a new Unity project and created a player with PlayerController script.
When I hit play, my player starts falling through the floor and after a few seconds it teleports up, to where it started falling. The floor, has a box collider and my player has a capsule collider and a rigidbody (both colliders have the isTrigger boolean set to false and they are both in the Default layer). I am using the same controller script I always use in my projects (unless I made a mistake and can't find it).
Here's that script:

     public class PlayerController : MonoBehaviour
     {
         public Rigidbody playerRigidbody;
         public Camera playerCamera;
         public float speed = 3f;
         public float mouseSensitivity = 5f;
         public Vector3 cameraOffset = Vector3.zero;
         private Vector3 playerPosition = Vector3.zero;
         private Vector3 playerRotation = Vector3.zero;
         private Vector3 cameraRotation = Vector3.zero;
     
         void Start()
         {
             playerRigidbody = GetComponent<Rigidbody>();
     
             playerPosition = playerRigidbody.position;
             playerRotation = playerRigidbody.rotation.eulerAngles;
             cameraRotation = playerCamera.transform.localEulerAngles;
         }
     
         void Update()
         {
             CalculateMovement();
             playerCamera.transform.position = playerRigidbody.position + cameraOffset;
         }
     
         void FixedUpdate()
         {
             playerRigidbody.MovePosition(playerPosition);
             playerRigidbody.MoveRotation(Quaternion.Euler(playerRotation));
     
             playerCamera.transform.localEulerAngles = cameraRotation;
         }
     
         void CalculateMovement()
         {
             Vector3 xVel = transform.right * Input.GetAxis("Horizontal");
             Vector3 zVel = transform.forward * Input.GetAxis("Vertical");
             playerPosition += (xVel + zVel) * speed * Time.fixedDeltaTime;
             Debug.Log((xVel + zVel) * speed * Time.fixedDeltaTime);
     
             float xRot = -Input.GetAxis("Mouse Y");
             float yRot = Input.GetAxis("Mouse X");
             playerRotation += new Vector3(0f, yRot, 0f) * mouseSensitivity;
             cameraRotation += new Vector3(xRot, yRot, 0f) * mouseSensitivity;
         }
     }

As you can see I've included a Debug.Log(), but it always prints 0.0 on the y axis.

EDIT:
I have removed the PlayerCotroller and the falling is not happening anymore, so there's something wrong with it.
I would be very happy if you'd help me find the error.

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 Buckslice · Jan 17, 2018 at 07:51 PM

The slow movement downward was due to gravity, but it wasn't able to build up since you were using moveposition each frame without accounting for it. I prefer just setting the rigidbody.velocity directly. Hope this helps.

 public class PlayerController : MonoBehaviour {
     public Rigidbody playerRigidbody;
     public Camera playerCamera;
     public float speed = 3f;
     public float mouseSensitivity = 5f;
     public Vector3 cameraOffset = Vector3.zero;
     private Vector3 playerRotation = Vector3.zero;
     private Vector3 cameraRotation = Vector3.zero;
 
     void Start() {
         playerRigidbody = GetComponent<Rigidbody>();
 
         playerRotation = playerRigidbody.rotation.eulerAngles;
         cameraRotation = playerCamera.transform.localEulerAngles;
     }
 
     void Update() {
         CalculateMovement();
         playerCamera.transform.position = playerRigidbody.position + cameraOffset;
     }
 
     Vector3 xVel;
     Vector3 zVel;
     void CalculateMovement() {
         xVel = transform.right * Input.GetAxis("Horizontal");
         zVel = transform.forward * Input.GetAxis("Vertical");
 
         float xRot = -Input.GetAxis("Mouse Y");
         float yRot = Input.GetAxis("Mouse X");
         playerRotation += new Vector3(0f, yRot, 0f) * mouseSensitivity;
         cameraRotation += new Vector3(xRot, yRot, 0f) * mouseSensitivity;
     }
 
     void FixedUpdate() {
         float yVel = playerRigidbody.velocity.y;
         playerRigidbody.velocity = (xVel + zVel) * speed + Vector3.up * yVel;
 
         playerRigidbody.MoveRotation(Quaternion.Euler(playerRotation));
 
         playerCamera.transform.localEulerAngles = cameraRotation;
     }
 
 }
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 J0K3R_12QQ · Jan 17, 2018 at 08:19 PM 0
Share

It worked! Thank you very much!

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

143 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

Related Questions

Stop rigidbody player from juddering when walking into a wall. 0 Answers

Custom Player Controller Ground Warping *SOLVED* 1 Answer

Player goes straight through cube 1 Answer

Player colliding with pickable object 0 Answers

Player is Speeding up in collisions 0 Answers


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