- Home /
move character at constant speed, and detect collisions.
I have a terrain which isn't flat. and I have a capsule collider object. I can move the object at a constant speed using the:
transform.Translate(Input.GetAxis("Horizontal") * Time.deltaTime * speed, 0, Input.GetAxis("Vertical") * Time.deltaTime * speed);
and the object moving on all the axis perfect, including the Y-axis, because of the rigidbody component reacting to the terrain collider. the problem is: when I put a wall with Box Collider. and set my object's rigidbody Collision detection to "Continuous dynamic", it still goes through the wall on low FPS. now i know there is another method to solve it, and the method is to move the object using "Rigidbody.Velocity = something." but the problem is that when you're using Velocity, it disables the gravity on the object, and he just start floating when i'm moving down a mountain in my terrain.
what i'm trying to ask is there any way to move an object at a constant speed, without disabling its gravity(using velocity), and without teleporting it a little bit every frame (using transform.translate) so it will be able to collide with the walls, even on very low FPS?
Thanks.
Answer by Cornelis-de-Jager · Jun 11, 2019 at 09:45 PM
Two methods you can use to get past this.
Method 1
Rigidbody rb;
void Start () => rb = GetComponent<Rigidbody>();
void Update () => rb.MovePosition(transform.position + transform.forward * Time.deltaTime);
Method 2
void Update () => transform.position = Vector3.Lerp (transform.position, transform.position + transform.forward * Time.deltaTime, 1f);
I just tried the first $$anonymous$$ethod and it didn't work. the object is moving fine, but still going through walls on low Fps. as I know $$anonymous$$ovePosition teleports the object a little bit every frame, which result going through walls on highspeed/low Fps, the same way transform.Translate works....
Your answer
Follow this Question
Related Questions
How to get transform.Translate to work with rigidbodies 2 Answers
Player shaking when colliding with objects 3 Answers
I walk through terrain/hills. 5 Answers
Problem with softbodies collisions 0 Answers