- Home /
I need help with sliding in infinite Runner please someone help
I am making a running game I am facing problem with sliding sysem when I slide animations gets player but my character control stays straight and I can't slide down from obstacle
my English is not that good if you didn't understand what I mean check out this video I captured
Answer by AaronXRDev · Nov 16, 2018 at 10:56 PM
The problem is that the character controller collision area doesn't change when you slide. I would attach a script named CharacterSlideController and add something that adjusts the size of the collider when the player goes under things.
Something like this:
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class CharacterSlideController : MonoBehaviour {
 
     private CharacterController characterController;
 
     private void Start()
     {
         characterController = GetComponent<CharacterController>();
     }
 
     public void StartSlide()
     {
         // Shrink the collision area when the slide starts
         characterController.center = new Vector3(0, -0.6f, 0);
         characterController.height = 0.75F;
     }
 
 
     public void EndSlide()
     {
         // Restore the collision area when the slide ends
         characterController.center = new Vector3(0, 1f, 0);
         characterController.height = 2;
     }
 
 }
 Then you could just call StartSlide and EndSlide from the animation, if you wanted.
how i call call from animation
 CharacterController controller;
 float speed = 5.0f;
 Vector3 moveVector;
 float gravity = 9.81f;
 float verticalVelocity;
 Animator anim;
 // Use this for initialization
 void Start()
 {
     controller = GetComponent<CharacterController>();
     anim = GetComponent<Animator>();
 }
 // Update is called once per frame
 void Update()
 {
     moveVector = Vector3.zero;
     //x
     moveVector.x = Input.GetAxisRaw("Horizontal") * speed;
     //y
     if (controller.isGrounded)
     {
         verticalVelocity = 0.5f;
     }
     else
     {
         verticalVelocity -= gravity * Time.deltaTime;
     }
     //z
     moveVector.z = speed;
     controller.$$anonymous$$ove(moveVector * Time.deltaTime);
     //animations Slide and Jump
     if (Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.UpArrow))
     {
         anim.SetBool("isJumping", true);
         Invoke("StopJumping", 0.2f);
     }
     if (Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.DownArrow))
     {
         anim.SetBool("isSliding", true);
         Invoke("StopSliding", 0.2f);
     }
 }
 void StopJumping()
 {
     anim.SetBool("isJumping", false);
 }
 void StopSliding()
 {
     anim.SetBool("isSliding", false);
 }
$$anonymous$$y Script
 Animator
 Animator
Here is some help on calling scripts from an animation: Using Animation Events
Your answer
 
 
             Follow this Question
Related Questions
3 lane Character controller switching..? 1 Answer
how to get the default third person character controller in unity 5 to move in midair 0 Answers
2D character control script in a 3D world 0 Answers
How I can Add kick and punch animation to Ethan Third Person Controller in Standard Assets? 0 Answers
How to make a normal WASD controller 4 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                