Sorry I would have done this for you before I just happened to be at work every time. So I did test this and it stopped my character dead in its tracks. I did not test the releasing of it but It should work. I made this script and just put it on the character. Then ontrigger enter called the voids you may have to change it to your liking.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Invector.vCharacterController;
public class DisableMovement : MonoBehaviour
{
private vThirdPersonController conroller;
private vShooterMeleeInput input;
private Rigidbody rigidbody;
private Animator animator;
public void LockMovement(Collider other)
{
conroller = other.GetComponent<vThirdPersonController>();
input = other.GetComponent<vShooterMeleeInput>();
rigidbody = other.GetComponent<Rigidbody>();
animator = other.GetComponent<Animator>();
input.lockInput = true;
input.lockMeleeInput = true;
input.lockShooterInput = true;
conroller.input = Vector3.zero;
rigidbody.velocity = Vector3.zero;
animator.SetFloat("verticalInput", 0);
animator.SetFloat("horizontalInput", 0);
}
public void UnlockMovement(Collider other) {
input = other.GetComponent<vShooterMeleeInput>();
input.lockInput = true;
input.lockMeleeInput = true;
input.lockShooterInput = true;
}
}