Beispiel #1
0
        public void ToggleInventoryMode(bool on)
        {
            if (on)
            {
                gameObject.layer = RaycastLayers.LayerToInt(RaycastLayers.InventoryItemLayer); // Inventory Item Layer

                _isInventoryModeOn     = true;
                _rigidbody.isKinematic = true;

                ToggleItemShine(false);
                ToggleInteractionTrigger(false);
            }

            else
            {
                gameObject.layer = RaycastLayers.LayerToInt(RaycastLayers.ItemLayer); // Item Layer

                _isInventoryModeOn     = false;
                _rigidbody.isKinematic = false;

                ToggleInteractionTrigger(true);
            }
        }
        IEnumerator ThrowGrenadeCo(Transform aimPoint)
        {
            yield return(new WaitForEndOfFrame());

            if (_grenade != null)
            {
                _grenade.Count--;

                GameObject grenadeObject = Instantiate(_grenade.gameObject, transform.position, transform.rotation, null);
                Grenade    grenade       = grenadeObject.GetComponent <Grenade>();
                Rigidbody  rb            = grenadeObject.GetComponent <Rigidbody>();

                if (grenadeObject != null)
                {
                    grenadeObject.SetActive(true);
                    grenadeObject.layer = RaycastLayers.LayerToInt(RaycastLayers.GrenadeThrownLayer); // Grenade Thrown Layer
                }

                if (grenade != null)
                {
                    grenade.SetExplosionMode();
                    grenade.SetExplosion();
                }

                if (rb != null)
                {
                    grenadeObject.GetComponent <Rigidbody>().AddForce((aimPoint.position - transform.position).normalized * GrenadeThrowForce, ForceMode.Impulse);
                    grenadeObject.GetComponent <Rigidbody>().AddTorque(_grenade.transform.forward * GrenadeTorqueForce, ForceMode.Impulse);
                }

                if (OnGrenadeChanged != null)
                {
                    OnGrenadeChanged.Invoke();
                }
            }
        }