Пример #1
0
        /// <summary>
        /// Update picked up object.
        /// </summary>
        /// <param name="pickup">Is this pickup action?</param>
        /// <param name="drop">If not pickup is it drop or throw?</param>
        private void UpdatePickedUpObject(bool pickup, bool drop)
        {
            if (characterGameObject == null)
            {
                if (!pickup)
                {
                    pickedUpObject = null;
                }
                return;
            }

            Rigidbody rigidBody = null;

            if (pickup)
            {
                pickedUpObject = netWorld.GetPickupableGameObject(pickedUpObjectNetId);
                Client.Assert(pickedUpObject != null, "Player tried to pickup object that does not exists in world. Net id: " + pickedUpObjectNetId);
                oldPickupableLayer   = pickedUpObject.layer;
                pickedUpObject.layer = Utils.LAYER_IGNORE_RAYCAST;
            }

            rigidBody = pickedUpObject.GetComponent <Rigidbody>();
            if (rigidBody != null)
            {
                rigidBody.isKinematic = pickup;
            }

            if (!pickup)
            {
                pickedUpObject.layer = oldPickupableLayer;
                pickedUpObject       = null;
            }
        }
Пример #2
0
 /// <summary>
 /// Update picked up object.
 /// </summary>
 /// <param name="pickup">Is this pickup action?</param>
 /// <param name="drop">If not pickup is it drop or throw?</param>
 private void UpdatePickedUpObject(bool pickup, bool drop)
 {
     if (pickup)
     {
         pickedUpObject = netWorld.GetPickupableGameObject(pickedUpObjectNetId);
         Client.Assert(pickedUpObject != null,
                       "Player tried to pickup object that does not exists in world. Net id: " +
                       pickedUpObjectNetId);
         oldPickupableLayer   = pickedUpObject.layer;
         pickedUpObject.layer = Utils.LAYER_IGNORE_RAYCAST;
         pickedUpObject.GetComponent <Rigidbody>().isKinematic = true;
     }
     else
     {
         Client.Assert(pickedUpObject != null,
                       "Tried to drop item however player has no item in hands.");
         pickedUpObject.layer = oldPickupableLayer;
         pickedUpObject.GetComponent <Rigidbody>().isKinematic = false;
         if (!drop)
         {
             float thrust = 50;
             pickedUpObject.GetComponent <Rigidbody>().AddForce(
                 pickedUpObject.transform.forward * thrust, ForceMode.Impulse);
         }
         pickedUpObject = null;
     }
 }