I have a third person character witha character controller. In the C# Player script I set the move direction like this which works pretty nice to simulate gravity

private Vector3 _moveDirection = Vector3.zero;

private float Gravity = 20.0f;

void Update()
 // ....
_moveDirection.y -= Gravity * Time.deltaTime;

_characterController.Move(_moveDirection * Time.deltaTime + mExternalMovement);

The mExternalMovement (also Vector3) I set when the player is on a platform that moves. This works as well for platforms the move e.g. from left to right. But when I use the same for platforms that move up and down the player is like trembling- because of the gravity that is always set for the y movement.

But I have to set the gravity as well when standing on the platform.... any ideas?

  • \$\begingroup\$ Have you considered adding gravity only when you're not in contact with a ground surface, such as a moving platform? \$\endgroup\$ – DMGregory Mar 24 '20 at 19:46
  • \$\begingroup\$ @DMGregory: Yes, but it hs not effect and it seems like that it isnet the gravity. It is doing this in one step: _characterController.Move(_moveDirection * Time.deltaTime + mExternalMovement); But when I move this _characterController.Move(mExternalMovement) to LateUpdate and keep _characterController.Move(_moveDirection * Time.deltaTime in Update it works smoothly. \$\endgroup\$ – Jay Mar 24 '20 at 20:49
  • \$\begingroup\$ Sounds like you should update your question then to reflect your current understanding of the problem. \$\endgroup\$ – DMGregory Mar 24 '20 at 20:52

Add a Rigidbody and use the gravity there?

  • \$\begingroup\$ Dont know what you mean. I have a Rigidbody but what does it had to do with the character controller? \$\endgroup\$ – Jay Mar 24 '20 at 19:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.