C# - Gameobject's box collider becoming inactive on pickup
Hey, so I didn't really know how to word the issue that I'm having in the title so I'll explain it here - hopefully a bit better!
So I wrote a script that allows my character to pick up items when he interacts with them, it does work (as in the game object I wish to pick up attaches itself to the player, as intended), however when the player drop it the box collider doesn't seem to want to detect the collision anymore. It does detect the collision before I pick it up, though, as otherwise I wouldn't be able to interact with it.
It's probably something quite obvious that I've missed, the collider seems to stop working after the player picks it up - I tried placing it in front of the player and walking towards different objects, only the player's collider is detected in those instances. The collider isn't turned off in the code when the player picks it up, nor is it turned off after so it's still active.
Here's the code I've got down (I'm not done with it yet, this is just a first write-up of it):
PickupScript:
using UnityEngine;
using System.Collections;
public class PickupScript : MonoBehaviour
{
public float pickupDist = 1f;
public Transform myTrans;
void Start()
{
myTrans = transform;
}
public void Drop()
{
myTrans.parent = null; //Reset the parent
// carriedObj = null; //PC hands are free once more
}
public void Pickup(Transform playerTrans)
{
myTrans.parent = playerTrans;
myTrans.localPosition = new Vector3(0,1,1);
}
}
Edited PlayerScript (So you don't see the other stuff!):
PickupScript pickupScript;
PickupScript currentHeldItem;
void Start()
{
controller = GetComponent<CharacterController>();
pickupScript = GetComponent<PickupScript>();
myTrans = transform;
}
void Update()
{
if( Input.GetButtonDown("pickup") && pickupScript != null) //the E key, it's pre-set in the input manager so can be changed by players on launch
{
if(currentHeldItem != null)
{
pickupScript.Drop();
}
else
{
pickupScript.Pickup(transform);
currentHeldItem = pickupScript;
}
}
}
void OnTriggerEnter(Collider other)
{
if (other.tag == "pickup") {
pickupScript = other.GetComponent<PickupScript>();
Debug.Log (other.tag);
}
}
}
I hope I've explained it all properly. What I'm essentially looking for is a reason as to why it's (the pickup game object) not recognising any of the collisions.
Your answer
Follow this Question
Related Questions
Help with Trigger Colliders.. 0 Answers
How to scale an object so it fits perfectly inside a collider? 1 Answer
Bullet destroy 2 game object intent one Unity 2D 0 Answers
Trigger enter and directly Exit 0 Answers
My checker work 2 times 0 Answers