private void Update() { if (pickupItem != null && Input.GetKeyDown(KeyCode.LeftControl)) { pickupItem.Use(this); pickupItem = null; } }
private void OnTriggerEnter(Collider other) { if (pickupItem != null) { return; } if (other.gameObject.GetComponent <IPickupComponent>() != null) { pickupItem = other.gameObject.GetComponent <IPickupComponent>().Pickup(); Destroy(other.gameObject.GetComponent <Renderer>()); } }
//--------------------------------------------------------------------------- public static Pickup Create(EPickups pickupType, Vector3 location, Vector3 force) { Pickup pickup = Create(pickupType.ToString(), location, force); IPickupComponent pickupComponent = null; Sprite sprite = m_Sprites[pickupType]; pickup.AddComponent <SpriteComponent>().Init(sprite, Vector2.Zero, Vector2.One * 2); pickup.AddComponent <ShadowComponent>().Init(sprite, Vector2.One * 2, new Vector2(0, 3)); pickup.AddComponent <LightingComponent>().Init(sprite, Vector2.Zero, Vector2.One * 2, Color.White, 0.5f); switch (pickupType) { case EPickups.Health: pickupComponent = pickup.AddComponent <HealthPickupComponent>(); break; case EPickups.Mana: pickupComponent = pickup.AddComponent <ManaPickupComponent>(); break; case EPickups.Coin: pickupComponent = pickup.AddComponent <CoinPickupComponent>(); break; default: AssertManager.Get().Show("Value used by 'Create' does not fit range of EPickups"); break; } if (pickupComponent != null) { pickup.GetComponent <CircleColliderComponent>().Enter += (source, target) => { pickupComponent.OnPickup(target); }; } return(pickup); }