public void OnTriggerEnter(Collider other) { ScavangerManager scavanger = other.GetComponent <ScavangerManager>(); if (scavanger != null && scavanger != owner) { Grabber grabber = scavanger.GetComponent <Grabber>(); if (grabber.GetGrabbedObject() == tools) { if (numberOfEnergyCells > 0) { Grabable energyCell = Instantiate(energyCellPrefab).GetComponent <Grabable>(); NetworkServer.Spawn(energyCell.gameObject); if (EnergyCellStolenEvent != null) { EnergyCellStolenEvent(energyCell); } grabber.Swap(energyCell); numberOfEnergyCells--; } else { grabber.Swap(null); } } } else if (scavanger != null) { Grabber grabber = scavanger.GetComponent <Grabber>(); Grabable grabbed = grabber.GetGrabbedObject(); if (grabbed != null && grabbed.tag == "EnergyCell") { numberOfEnergyCells++; if (EnergyCellPlacedEvent != null) { EnergyCellPlacedEvent(); } grabber.Swap(null); Destroy(grabbed.gameObject); } } }
void Update() { // Solo podemos hace opciones de apuntar y coger si no hay nada agarrado, // en caso contrario el control lo tiene el Grabber UpdateClicks(); if (grabber.GetGrabbedObject() == null) { // Si distancia con head > th, laser if ((headPosition.position - transform.position).sqrMagnitude >= thPointer) { interactMode = Mode.Far; LaserBehaviour(); } // Si no, comportamiento a corta distancia else { interactMode = Mode.Close; CloseBehaviour(); } } }