protected void OnTriggerStay(Collider other) { ISuckable suckable_temp = other.gameObject.GetComponent <ISuckable>(); IElement element_temp = other.gameObject.GetComponent <IElement>(); float multiplyer = ((element_temp != null) ? element_temp.GetTier().GetMultiplyer() : 1); if (suckable_temp != null) { Rigidbody RB = other.GetComponent <Rigidbody>(); suckable_temp.Sacking(); if (RB != null && RB.mass < _Player.GetPlayerStats().SuckingPowerProperties *_Player.GetPlayerStats().SuckingPowerMultiplyerProperties) { RB.AddForce(-GAcceleration(_Owner.transform.position, RB.mass * multiplyer, RB)); if (Vector3.Distance(other.gameObject.transform.position, _Owner.gameObject.transform.position) < 3 + multiplyer) { if (element_temp != null) { for (int i = 0; i < multiplyer; ++i) { _Player.StockSlime(element_temp.GetElementType()); } } IDamageable damage_temp = other.gameObject.GetComponent <IDamageable>(); if (damage_temp != null) { damage_temp.TakeDamage(9999); if (other.gameObject.tag == "Enemy") { GameStateManager.Instance.DecreaseEnemy(); ObjectManager.Instance.ReleaseObject(other.gameObject); } } } } } }
private void DoSuck(GameObject obj) { ISuckable suckable = obj.GetComponent <ISuckable>(); IEatable eatable = obj.GetComponent <IEatable>(); var tempDistance = Vector3.Distance(transform.position, obj.transform.position); if (eatable != null) { if (tempDistance < eatDistance) { GameObject tempObj = eatable.Eat(); if (tempObj != null) { _eatenObjects.Add(tempObj); tempObj.SetActive(false); _audioComponent?.Play(4); // Play eat sound eatEvent?.Invoke(); // Invoke eat event return; } } } if (suckable != null) { if (InRangeCheck(gameObject, obj)) { var tempSuckForce = vacuumPowerLevel - tempDistance; if (tempSuckForce < minimumPower) { tempSuckForce = minimumPower; } suckable.Suck(transform.position, tempSuckForce); } } }