How to make the character roll and also resize the collider?
So the rolling works fine but the only problem i am having is that whenever i roll the character collider doesn't resize and that does so i can't roll under objects. I have tried to make a bool so that whenever i hit "S" the the bool will be enabled and the collider size would change but that doesn't seem to work for me and i don't have much experience in coding. Here is my script:
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class PlayerMotor : MonoBehaviour {
 private CharacterController controller;
 private float verticalVelocity = 0.0f;
 private Vector3 moveVector;
 private float gravity = 12.0f;
 private float animationDuration = 2.0f;
 private float speed = 5.0f;
 private bool isDead = false;
 private float startTime;
 private Animator anim;
 public bool isRolling;
 public float RollingSpeed;
 public Transform Pens;
 private Collider PenCollider;
 public float rollingHeight = 1.0f;
 void Start () 
 {
     controller = GetComponent<CharacterController> ();
     startTime = Time.time;
     anim = GetComponent<Animator> ();
     PenCollider = GetComponent<BoxCollider> ();
     isRolling = false;
 }
 
 void Update () 
 {
     if (isRolling = true) 
     {
         controller.height = rollingHeight;
     } 
     else 
     {
         controller.height = 2.2f;
     }    
     if (Input.GetKeyDown ("s")) 
     {
         anim.SetTrigger ("Rolling");
         isRolling = true;
     }
     if (isDead)
         return;
     if (Time.time - startTime < animationDuration) 
     {
         controller.Move (Vector3.forward * speed * Time.deltaTime);
         return;
     }    
     if (controller.isGrounded) 
     {
         verticalVelocity = -0.5f;
     } 
     else 
     {
         verticalVelocity -= gravity * Time.deltaTime;
     }    
     moveVector = Vector3.zero;
     // X - Left and Right
     moveVector.x = Input.GetAxisRaw("Horizontal") * speed;
     // y - Up and Down
     moveVector.y = verticalVelocity;
     // z -Forward and Backward
     moveVector.z = speed;
     controller.Move (moveVector * Time.deltaTime);
 }
 public void SetSpeed(float modifier)
 {
     speed = 5.0f + modifier;
 }
 private void OnControllerColliderHit(ControllerColliderHit hit)
 {
     if (hit.point.z > transform.position.z + 0.1f && hit.gameObject.tag == "Enemy")
         Death ();    
 }
 private void Death()
 {
     isDead = true;
     GetComponent<Score> ().OnDeath ();
 }
 
               } `
Your answer
 
             Follow this Question
Related Questions
How do i move my character in a direction that is not based on the character facing direction? 0 Answers
player getting stuck when moving. 1 Answer
Why my character spread when moving? 0 Answers
Adding collisions to a custom character controller? 1 Answer
How to set a start_walking animation using blentree 2 Answers