- Home /
disable collision on an object when pressing Q (3D)
I'm using Unity 3D, using an FPS Camera and already know how raycasting works. Can provide script files if needed.
I started by adding a script to my capsule player, and after playing around i just couldnt get it to work.
I want for it to detect when Q is pressed, launch a ray into an object, get its info and turn off it's collision. If possible, i'd like for the collision to come back when you stop holding Q.
void Update()
{
if (Input.GetButtonDown("Q"))
{
anim.Play("Base Layer.voidarm", -1, 0f);
voidd();
}
}
void voidd()
{
RaycastHit voiddd;
if (Physics.Raycast(fpscam.transform.position, fpscam.transform.forward, out voiddd, range))
{
Debug.Log(voiddd.transform.name);
MeshCollider target = voiddd.transform.GetComponent<MeshCollider>();
if (target != null)
{
collission.enabled = false;
}
}
}
Comment
Best Answer
Answer by DenisIsDenis · Jun 17, 2021 at 11:53 AM
To disable the collider, you can refer to the object with the given collider via voiddd
:
Collider collider;
void voidd()
{
RaycastHit voiddd;
if (Physics.Raycast(fpscam.transform.position, fpscam.transform.forward, out voiddd, range))
{
voiddd.collider.enabled = false;
collider = voiddd.collider;
}
}
And add to Update ():
if (Input.GetButtonUp("Q"))
{
collider.enabled = true;
}