- Home /
Can't disable component, little checkbox is missing from inspector
Hi, newbie Unity user here. I don't know any C# so I'm quite lost on this one. I'm using a third person controller script and I want to disable it using my visual scripting plugin (Playmaker). However, it doesn't have the little checkbox to allow for disabling/enabling components like other components, which I assume is the problem.
Here is the code:
using UnityEngine;
namespace Invector.vCharacterController
{
public class vThirdPersonController : vThirdPersonAnimator
{
public virtual void ControlAnimatorRootMotion()
{
if (!this.enabled) return;
if (inputSmooth == Vector3.zero)
{
transform.position = animator.rootPosition;
transform.rotation = animator.rootRotation;
}
if (useRootMotion)
MoveCharacter(moveDirection);
}
public virtual void ControlLocomotionType()
{
if (lockMovement) return;
if (locomotionType.Equals(LocomotionType.FreeWithStrafe) && !isStrafing || locomotionType.Equals(LocomotionType.OnlyFree))
{
SetControllerMoveSpeed(freeSpeed);
SetAnimatorMoveSpeed(freeSpeed);
}
else if (locomotionType.Equals(LocomotionType.OnlyStrafe) || locomotionType.Equals(LocomotionType.FreeWithStrafe) && isStrafing)
{
isStrafing = true;
SetControllerMoveSpeed(strafeSpeed);
SetAnimatorMoveSpeed(strafeSpeed);
}
if (!useRootMotion)
MoveCharacter(moveDirection);
}
public virtual void ControlRotationType()
{
if (lockRotation) return;
bool validInput = input != Vector3.zero || (isStrafing ? strafeSpeed.rotateWithCamera : freeSpeed.rotateWithCamera);
if (validInput)
{
// calculate input smooth
inputSmooth = Vector3.Lerp(inputSmooth, input, (isStrafing ? strafeSpeed.movementSmooth : freeSpeed.movementSmooth) * Time.deltaTime);
Vector3 dir = (isStrafing && (!isSprinting || sprintOnlyFree == false) || (freeSpeed.rotateWithCamera && input == Vector3.zero)) && rotateTarget ? rotateTarget.forward : moveDirection;
RotateToDirection(dir);
}
}
public virtual void UpdateMoveDirection(Transform referenceTransform = null)
{
if (input.magnitude <= 0.01)
{
moveDirection = Vector3.Lerp(moveDirection, Vector3.zero, (isStrafing ? strafeSpeed.movementSmooth : freeSpeed.movementSmooth) * Time.deltaTime);
return;
}
if (referenceTransform && !rotateByWorld)
{
//get the right-facing direction of the referenceTransform
var right = referenceTransform.right;
right.y = 0;
//get the forward direction relative to referenceTransform Right
var forward = Quaternion.AngleAxis(-90, Vector3.up) * right;
// determine the direction the player will face based on input and the referenceTransform's right and forward directions
moveDirection = (inputSmooth.x * right) + (inputSmooth.z * forward);
}
else
{
moveDirection = new Vector3(inputSmooth.x, 0, inputSmooth.z);
}
}
public virtual void Sprint(bool value)
{
var sprintConditions = (input.sqrMagnitude > 0.1f && isGrounded &&
!(isStrafing && !strafeSpeed.walkByDefault && (horizontalSpeed >= 0.5 || horizontalSpeed <= -0.5 || verticalSpeed <= 0.1f)));
if (value && sprintConditions)
{
if (input.sqrMagnitude > 0.1f)
{
if (isGrounded && useContinuousSprint)
{
isSprinting = !isSprinting;
}
else if (!isSprinting)
{
isSprinting = true;
}
}
else if (!useContinuousSprint && isSprinting)
{
isSprinting = false;
}
}
else if (isSprinting)
{
isSprinting = false;
}
}
public virtual void Strafe()
{
isStrafing = !isStrafing;
}
public virtual void Jump()
{
// trigger jump behaviour
jumpCounter = jumpTimer;
isJumping = true;
// trigger jump animations
if (input.sqrMagnitude < 0.1f)
animator.CrossFadeInFixedTime("Jump", 0.1f);
else
animator.CrossFadeInFixedTime("JumpMove", .2f);
}
}
}
I'm not really sure how to go about fixing this problem. If anyone has any answers, it'd be much appreciated. Thank you.
Answer by N-8-D-e-v · Sep 11, 2020 at 01:08 AM
The checkbox only disables Monobehaviour methods (Start, Awake, Update etc). This script has none of those methods, so it will not have a checkbox
Is there no way to change the code so that it appears?
let re-iterate, the checkbox doesn't disable the script, it just disables Awake, Start, Update etc so whatever script is using all of these methods and data needs to be unchecked
edit: I see you are using playmaker, so you don't know what I'm talking about. I see that this script inherits from vThirdPersonAnimator, so could I see that script?
Your answer
Follow this Question
Related Questions
How to handle coupled components in Unity 2 Answers
Access water4 scripts via my script? 1 Answer
Cannot destroy Component while GameObject is being activated or deactivated 2 Answers
"There is no 'GameObject' attached to the "x" game object' 2 Answers
Is there a way to dynamically attach a script to a GameObject during runtime? 1 Answer