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