The MagicWand gameObject is the child of my Player gameObject.
I increased the volume of the sphere collider of magicWand so it over-reaches the spherical collider of the Player.
(It looks kinda like if PlayerGO was the nucleus of an atom and the collider of MagicWandGO was it’s electron layer.)
The problem is, when I approach a PickUp item, it is picked up by the MagicWand’s collider instead of Player’s collider. Can this be fixed somehow?
This script is attached to MagicWand:
public class MagicWand_P1_scr : MonoBehaviour {
private bool _spellReady;
public int _spellCharged;
private bool _enemyWithinRange;
public GameObject _spell;
private Light _player2_light;
// enum Spells{Shock, Ignite, AcidSpray};
void Start ()
{
_spellReady = false;
_enemyWithinRange = false;
_player2_light = GameObject.FindWithTag ("Player_2").GetComponent<Light>();
}
// Update is called once per frame
void Update ()
{
Debug.Log("_enemyWithinRange " + _enemyWithinRange);
}
void OnTriggerEnter(Collider other)
{
if(other.name == "Player_2")
{
_player2_light.enabled = true;
_enemyWithinRange = true;
}
}
void OnTriggerExit(Collider other)
{
if(other.name == "Player_2")
{
_player2_light.enabled = false;
_enemyWithinRange = false;
}
}
}
This script is attached to Player:
public class PlayerMover_P1_scr : MonoBehaviour {
public float _movementSpeed;
private int _health;
MagicWand_P1_scr _magicWandController;
// Use this for initialization
void Start () {
GameObject _magicWandObject = GameObject.FindWithTag ("magicWand_1");
if (_magicWandObject != null)
{
Debug.Log ("magic wand found");
}
_magicWandController = _magicWandObject.GetComponent<MagicWand_P1_scr>();
if(_magicWandController != null)
{
Debug.Log ("magicWandController found");
}
_movementSpeed = 7f;
_health = 100;
}
void Update ()
{
if(Input.GetButtonDown ("Fire_P1"))
{
_magicWandController.CastSpell ();
}
}
void FixedUpdate()
{
float _moveHorizontal = Input.GetAxis ("Horizontal_P1");
float _moveVertical = Input.GetAxis ("Vertical_P1");
Vector3 _movement = new Vector3(_moveHorizontal, 0.0f, _moveVertical);
rigidbody.AddForce (_movement * _movementSpeed, ForceMode.Force);
}
void OnTriggerEnter(Collider other)
{
if(other.gameObject.name == "PickUp")
{
Debug.Log ("P1_col = " + other.gameObject.tag);
Destroy (other.gameObject);
if(other.gameObject.tag == "IGNITE_pu")
{
xa._magicWand_1_SCRIPT.ChargeSpell("Ignite");
}
if(other.gameObject.tag == "SHOCK_pu")
{
xa._magicWand_1_SCRIPT.ChargeSpell("Shock");
}
if(other.gameObject.tag == "ACID_pu")
{
xa._magicWand_1_SCRIPT.ChargeSpell("Acid");
}
}
}
}